为什么G ++崩溃的Maden Dll?

问题描述 投票:0回答:1

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; }
c++ dll g++ mingw
1个回答
0
投票
g++ -shared -o mydll.dll mydll.cpp -wl, - out -implib,libmydll.a
共享:告诉G ++创建共享库(DLL)。
-o mydll.dll:指定输出文件名(mydll.dll)。
-wl, -  out-implib,libmydll.a:生成用于与其他应用程序链接的导入库(libmydll.a)。

生成的mydll.dll将与mydll.cpp处于相同的目录。您可以使用以下工具:依赖关系沃克检查出口符号。

测试应用程序加载和使用DLL。 带有mingw的示例命令 如果您使用的是mingw-w64,请确保G ++在您的路径中并运行:

g++ -shared -o mydll.dll mydll.cpp -wl, - out -implib,libmydll.a

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.