MFC问题:封装dll遇到的奇葩错误:error LNK2005: _DllMain@12 已经在 DLLMain.obj 中定义
创建的dll工程,在需要添加MFC文件时候,遇到问题:error LNK2005: _DllMain@12 已经在 DLLMain.obj 中定义。
·
创建的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
问题解决!
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)