ITryna用G ++编译DLL
g++ -c main.cpp
g++ -shared -o main.dll main.o
但是将其注入过程失败。 failing finding address of msvcrt!__dllonexit
作弊引擎消息。测试过程是记事本。
这是我的源文件
#include <windows.h>
BOOL APIENTRY DllMain(HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
我猜Mingw没有声明onexit回调,所以我应该自己做,但它不起作用
我尝试了onexit()
,然后声明
extern "C" _onexit_t __dllonexit( _onexit_t func, _PVFV ** pbegin, _PVFV ** pend );
我从作弊引擎中收到相同的消息failing finding address of msvcrt!__dllonexit
idk,该怎么办当我与Visual Studio一起编译时,一切都很好。
#include <windows.h>
__declspec(dllexport) void MyFunction() {
MessageBox(NULL, "Hello from MyFunction!", "DLL Message", MB_OK);
}
BOOL APIENTRY DllMain(HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
生成的mydll.dll将与mydll.cpp处于相同的目录。您可以使用以下工具:依赖关系沃克检查出口符号。
测试应用程序加载和使用DLL。 带有mingw的示例命令 如果您使用的是mingw-w64,请确保G ++在您的路径中并运行:g++ -shared -o mydll.dll mydll.cpp -wl, - out -implib,libmydll.a