我正在使用由其他程序员提供的 DLL,该 DLL 提供了我想在我的应用程序中使用的某些功能。只要我在同一个 .cpp 文件中使用导入的函数,下面的代码就可以工作——但不是在所有单独的类中都有效:
主文件
typedef void(*SendChat)(char*);
主文件
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;
}
当我在 main.cpp 中使用 _SendChat 时,它可以工作并执行它应该做的事情,但是一旦我在以下类中使用它,它就不起作用:
客户端.h
#include "main.h"
客户端.cpp
#include "client.h"
void MyClient::Send(char* Message)
{
_SendChat(Message);
}
这是有道理的,因为在 client.cpp 中的任何地方都没有 _SendChat 的定义,除了我尝试寻找如何解决这个问题,但我几乎什么也没找到——这让我觉得我看起来不对。
欢迎任何提示。