创建的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

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐