#include "stdafx.h"
extern "C" BOOL __declspec(dllexport) StartLog(int w_id);
extern "C" BOOL __declspec(dllexport) StopLog();
HINSTANCE hLib;
BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
return TRUE;
}
BOOL StartLog(int w_id)
{
return TRUE;
}
BOOL StopLog()
{
return TRUE;
}
Access violation при подключении dll
Код:
код вызова функции:
Код:
void __fastcall TFormMain::ButtonDoClick(TObject *Sender)
{
bool isOk = false;
bool (__stdcall *StartLog)(int);
dllp = LoadLibrary("msqld.dll");
if(!dllp)
return;
StartLog = (bool(__stdcall *)(int))GetProcAddress(dllp, "StartLog");
if(StartLog)
isOk = StartLog(some_int);
}
{
bool isOk = false;
bool (__stdcall *StartLog)(int);
dllp = LoadLibrary("msqld.dll");
if(!dllp)
return;
StartLog = (bool(__stdcall *)(int))GetProcAddress(dllp, "StartLog");
if(StartLog)
isOk = StartLog(some_int);
}
так вот он вызывает StartLog, но при выходе из ButtonDoClick выскакивает ошибка, никак не могу понять почему
Может быть проблема с вызовом. У тебя в dll-ке экспорт функций описан как cdecl (по-умолчанию), а загружаешь ты их как stdcall.
Цитата: Archie
Может быть проблема с вызовом. У тебя в dll-ке экспорт функций описан как cdecl (по-умолчанию), а загружаешь ты их как stdcall.
помогло, огромное спасибо!
Ксати, и код в этом случае получится куда читабельнее