Я использую DLL, предоставленную другим программистом, который предлагает определенные функции, которые я хочу использовать в своем приложении. Ниже код работает до тех пор, как я использую импортируемые функции в одном файле .cpp - но не на протяжении всех отдельных классов:Использование функции GetProcAddress во всех классах
main.h
typedef void(*SendChat)(char*);
main.cpp
SendChat _SendChat;
HINSTANCE hMain = 0;
BOOL WINAPI DllMain(HINSTANCE hInst,DWORD reason,LPVOID)
{
if(reason == DLL_PROCESS_ATTACH)
{
_beginthread(WorkerThread,0,NULL);
hMain = LoadLibraryA("calculate.dll");
if (hMain)
_SendChat = (SendChat)GetProcAddress(hMain, "SendChat");
}
if (reason == DLL_PROCESS_DETACH)
{
//..
}
return 1;
}
_SendChat работает и делает то, что он должен делать, когда я использую его в main.cpp, но как только я его использую в следующем классе, он не работает:
client.h
#include "main.h"
client.cpp
#include "client.h"
void MyClient::Send(char* Message)
{
_SendChat(Message);
}
Это имеет смысл, так как нет никакого определения _SendChat нигде в client.cpp кроме я пытался, глядя, как решить это, но я не нашел ничего, что заставляет меня думать, что я не выгляжу правильно.
Любые подсказки приветствуются.
Глядя на ваш код, я предполагаю, что вы строите dl л. Вы отлаживали в MyClient :: Send и проверяли точки _SendChat на значение в возвращаемом значении GetProcAddress()? – XPD
Вы получаете компиляцию или ошибку времени выполнения? Какая ошибка? –
Ошибка компилятора: «_SendChat: идентификатор не найден» в client.cpp. – Roel