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函数的作用。。
时间: 2025-01-27 01:39:45

error LNK2005: _DllMain@12 已经在 dllmain.obj 中定义的相关文章

ZZmsvcprt.lib(MSVCP90.dll) : error LNK2005:已经在libcpmtd.lib(xmutex.obj) 中定义 .的分析解决办法

  很久没有写程式设计入门知识的相关文章了,这篇文章要来谈谈程式库 (Library) 连结,以及关于 MSVC 与 CRT 之间的种种恩怨情仇. 如果你使用的作业系统是 Linux.Mac 或其他非 Windows 平台,你可以忽略这篇文章:如果你使用的作业系统是 Windows 平台,但没有用 Microsoft Visual Studio C++(以下简称为 MSVC)软体撰写 C++ 程式的话,这篇文章对你的帮助可能很有限:但如果你的作业系统是 Windows,而且你使用的程式整合开发环

error LNK2005 已经在***.obj中定义 的解决办法

为什么会出现这个错误??"error LNK2005: 已经在aaa.obj中定义" 编程中经常能遇到LNK2005错误--重复定义错误,其实LNK2005错误并不是一个很难解决的错误.弄清楚它形成的原因,就可以轻松解决它了.         造成LNK2005错误主要有以下几种情况:     1.重复定义全局变量.可能存在两种情况:     A.对于一些初学编程的程序员,有时候会以为需要使用全局变量的地方就可以使用定义申明一下.其实这是错误的,全局变量是针对整个工程的.正确的应该是在

C++ Error LNK2005(不知道哪儿重复定义了)

问题描述 C++ Error LNK2005(不知道哪儿重复定义了) 代码: #include #include #include #include "testcpp.cpp" int main() { aaa t; t.ChangeK(&t); t.PutK(&t); system("pause"); return 0; } testcpp.cpp #include using namespace std; typedef struct aaa{

_DllMain@12 already defined的问题

如果开始用了一个SDK的Dll工程,然后为了在这个dll工程里面使用MFC,那么就会出现错误,例如 nafxcw.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in MsgBox.obj 或者 mfcs42.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in MsgBox.obj 为了解决该问题 你只需要在工程设置里面,把 WIN32,N

error LNK2005: XXX已经定义 解决办法

msvcprt.lib(MSVCP90.dll) : error LNK2005: "public: void __thiscall std::_Mutex::_Lock(void)" (?_Lock@_Mutex@std@@QAEXXZ) 已经在 libcpmtd.lib(xmutex.obj) 中定义   好几百条 网上说   解决办法:保证需要链接的几个项目的运行时库使用同一个类型就OK了!例如我的工程中有GameCore.Plugin_D3D9RenderSystem.Plug

error LNK2005: already defined in CJXXDlg.obj

问题描述 error LNK2005: already defined in CJXXDlg.obj EDIT1Dlg.obj : error LNK2005: ""struct IMath * __cdecl CreateInterface(void)"" (?CreateInterface@@YAPAUIMath@@XZ) already defined in CJXXDlg.obj 编译时总是出现这个问题,不知道怎么解决,希望各位可以帮帮忙,谢谢 解决方案 你

Solve Error: nafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new[](unsigned int)" (??_U@YAPAXI@Z) already defined in libcpmt.lib(newa

Error: nafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new[](unsigned int)" (??_U@YAPAXI@Z) already defined in libcpmt.lib(newaop.obj)  Solution: Go to Property -> Linker -> Input -> Additional Dependencies Add nafxcw.l

一个奇怪的链接错误error LNK2005

今天在链接程序的时候发现一个比较奇怪的问题: comsuppw.lib(comutil.obj) : error LNK2005: "class _variant_t vtMissing" (?vtMissing@@3V_variant_t@@A) already defined in comsupp.lib(comutil.obj) ../bin/xxx.exe : fatal error LNK1169: one or more multiply defined symbols f

《中国人工智能学会通讯》——12.44 分类型数据的定义

12.44 分类型数据的定义 设 X={x 1 , x 2 , -, x n } 表示 n 个对象组成的一个数据集,其中 x i =(x i1 , x i2 , -, x im ) 表示由 m 个属性A={a 1 , a 2 , -, a m } 描述的第 i 个对象.x ij (1 ≤ j ≤ m)表示对象 x i 在第 j 个属性上的取值.表示对象集 X 在第 j 个属性上的值域.对于任意的 s V j ,t V j ,如果 s和 t 之间有无穷多个其他取值,则称 V j为数值型数据 (nu