当在Test.h文件中已有
extern HANDLE hThread;
extern HANDLE hEvent;
同时在Test.cpp文件中有
HANDLE hThread;
HANDLE hEvent;
如果dllmain.cpp中同时包含了Test.cpp文件则会出现以下错误:
1>------ 已启动生成: 项目: kxlTestDLL, 配置: Debug Win32 ------
1> dllmain.cpp
1>dllmain.obj : error LNK2005: "void * hThread" (?hThread@@3PAXA) 已经在 kxlTestDLL.obj 中定义
1>dllmain.obj : error LNK2005: "void * hEvent" (?hEvent@@3PAXA) 已经在 kxlTestDLL.obj 中定义
1>E:\COPERATOR_DLL\kxlTestDLL\Debug\kxlTestDLL.dll : fatal error LNK1169: 找到一个或多个多重定义的符号
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
解决办法:查看是否在stdafx.h和dllmain.cpp中包含了不必要的.cpp文件,删除即可。
extern HANDLE hThread;
extern HANDLE hEvent;
同时在Test.cpp文件中有
HANDLE hThread;
HANDLE hEvent;
如果dllmain.cpp中同时包含了Test.cpp文件则会出现以下错误:
1>------ 已启动生成: 项目: kxlTestDLL, 配置: Debug Win32 ------
1> dllmain.cpp
1>dllmain.obj : error LNK2005: "void * hThread" (?hThread@@3PAXA) 已经在 kxlTestDLL.obj 中定义
1>dllmain.obj : error LNK2005: "void * hEvent" (?hEvent@@3PAXA) 已经在 kxlTestDLL.obj 中定义
1>E:\COPERATOR_DLL\kxlTestDLL\Debug\kxlTestDLL.dll : fatal error LNK1169: 找到一个或多个多重定义的符号
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
解决办法:查看是否在stdafx.h和dllmain.cpp中包含了不必要的.cpp文件,删除即可。

本文介绍了一个常见的编程问题:在DLL项目中因变量多重定义导致的链接错误。文章详细解释了错误产生的原因,并给出了具体的解决方案,即检查并移除不必要的文件包含。
4183

被折叠的 条评论
为什么被折叠?



