创建的dll工程,在需要添加MFC文件时候,遇到问题:
error LNK2005: _DllMain@12 已经在 DLLMain.obj 中定义

原因

在创建Dll工程的时候,需要我们定义一个DllMain的入口函数。
当我们添加MFC的头文字时候,MFC默认封装了这个入口函数,因此,当添加包含了这些头文件:<afx.h> <afxinet.h> 就加了这两个头文件就出了问题!

解决

修改自己定义的DllMain.cpp入口函数

#include <windows.h>

#ifdef _X86_
extern "C" { int _afxForceUSRDLL; }
#else
extern "C" { int __afxForceUSRDLL; }
#endif

BOOL APIENTRY DllMain(HANDLE 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_PROCESS_DETACH:break;
    case DLL_THREAD_DETACH:break;
    }
    return TRUE;
}

其中,重要的是

#ifdef _X86_
extern "C" { int _afxForceUSRDLL; }
#else
extern "C" { int __afxForceUSRDLL; }
#endif

问题解决!

原创来自:
https://www.cnblogs.com/foundwant/p/3410077.html

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐