Решил забить на мастер и создать пустой проект. Потом добавил туда хедер и сппшник. Но есть траббл.
В общем, создаю длл не для консольного приложения, а для Виндоус формс. Написал длл, в ней функция которая возвращает сумму двух интов. Теперь пишу приложение, которое подключает эту длл и использует эту ф-ию. Написал так, чтобы возвращаемый инт выводился в лейбл на форме. Короче, всё скомпилировалось и запустилось, но, когда нажимаю на баттон, по нажатии на котором должна подключаться длл и выводить сумма в лебл, то длл подключается, а в лейбл выводится какое-то левое число, большое. Причем для любых чисел, которые я суммирую, выводится одно и то же большое число.
Вот куски кода.
Хедер дллки:
- Код: Выделить всё
#define DllExport extern "C" _declspec(dllexport)
DllExport int RunStopHook(int a, int b);
Код дллки:
- Код: Выделить всё
#include <windows.h>
#include "dll.h"
BOOL APIENTRY DllMain(
HINSTANCE hinstDLL, // handle to DLL module
DWORD fdwReason, // reason for calling function
LPVOID lpReserved ) // reserved
{
return TRUE; // Successful DLL_PROCESS_ATTACH.
}
DllExport int RunStopHook(int a, int b)
{
return a+b;
}
Кусок кода нажатия на кнопку:
- Код: Выделить всё
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
HINSTANCE hModule;
typedef int (RunStopHookProc)(int,int);
RunStopHookProc* RunStopHook;
hModule = ::LoadLibrary(L"dll.dll");
RunStopHook = (RunStopHookProc*)::GetProcAddress((HMODULE)hModule, "RunStopHook");
int test = (*RunStopHook)(1,2);
this->label1->Text=Convert::ToString(test);
}
Где происходит сбой? Почему возвращается не сумма a и b, а что-то левое? Или возвращается всё правильно, но где-то теряется?