解决共享 MFC DLL 中 'error LNK2005: _DllMain@12 已经在 dllmain.obj 中定义' 错误

在使用共享 MFC DLL 项目时,你可能会遇到链接错误 'error LNK2005: _DllMain@12 已经在 dllmain.obj 中定义'。这个错误通常是由于项目中存在多个定义了 DllMain 函数的源文件引起的。

问题原因:

共享 MFC 规则的 DLL 项目会自动生成一个包含 DllMain 函数定义的 dllmain.cpp 文件。如果你手动添加另一个定义了 DllMain 函数的 dllmain.cpp 文件或在其他源文件中定义 DllMain,就会导致重复定义错误。

解决方法:

  1. 删除手动添加的 dllmain.cpp 文件: 这是最简单的解决方案。删除任何你自己创建的 dllmain.cpp 文件,只保留 MFC 自动生成的文件。

  2. 重命名自定义的 DllMain 函数: 如果你需要在自定义的源文件中使用类似 DllMain 功能的代码,可以将函数重命名为其他名称,避免与 MFC 生成的 DllMain 冲突。

  3. 在自定义源文件中声明 DllMain: 如果确实需要在自定义源文件中使用 DllMain 函数,请在头文件中声明 DllMain,并在需要的地方调用它。

**示例:**cpp// 在头文件中声明 DllMainextern 'C' BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved);

// 在源文件中调用 DllMainBOOL MyFunction(){ // ... BOOL result = DllMain(hInstance, DLL_PROCESS_ATTACH, NULL); // ...}

通过以上步骤,你就可以解决 'error LNK2005: _DllMain@12 已经在 dllmain.obj 中定义' 错误,并确保你的共享 MFC DLL 项目能够正常编译和链接。

解决共享MFC DLL中'error LNK2005: _DllMain@12 已经在 dllmain.obj 中定义' 错误

原文地址: https://www.cveoy.top/t/topic/fAzX 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录