error LNK2005: _DllMain@12 已經在 dllmain.obj 中定義


error LNK2005: _DllMain@12 已經在 dllmain.obj 中定義
今天遇到了同樣的問題,搜索搜到了這里,后來解決了。。。。。。。。
創建解決方案時,用的是WIN32 DLL,添加了MFC ATL的支持,自動生成文件中是沒有現成的DllMain函數的。后來需要用到這個入口函數,所以自己人工添加了DllMain函數,調試結果就報錯,退重復定義DllMain之類的。。。

從其它地方找到了解決辦法,這里給大家分享下:

給項目添加一個dllmian.cpp,里邊的內容為
// dllmain.cpp : 定義 DLL 應用程序的入口點。
#include "stdafx.h"

// global data

// The following symbol used to force inclusion of this module for _USRDLL
#ifdef _X86_
extern "C" { int _afxForceUSRDLL; }
#else
extern "C" { int __afxForceUSRDLL; }
#endif

BOOL APIENTRY DllMain( HMODULE hModule,
  DWORD ul_reason_for_call,
  LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}

這樣問題就 解決了。。最重要的就是
#ifdef _X86_
extern "C" { int _afxForceUSRDLL; }
#else
extern "C" { int __afxForceUSRDLL; }
#endif
這段代碼起到了強制執行你自定義的dllmain函數的作用。。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM