[问题] VS2012 windows form 自定义class宣告

楼主: Sportsman (运动家)   2014-11-12 02:05:48
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
Visual Studio 2012 中的 VC++ CLR专案 拉Windows Form
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
OpenCV (应该不重要)
问题(Question):
我在专案内定义了自己写的class A(A.h、A.cpp)
然后在Form.h内宣告了该class的全域物件(A objA;) 如下所示
#include "A.h"
#include ...
A objA;
namespace main {
...
}
并进行各种操作运算
问题在于 在编译时 会出现以下错误
错误 1 error LNK2005: "class A objA" (?objA@@3VA@@A) 已在
main.obj 中定义过了
错误 2 error LNK1169: 找到有一或多个已定义的符号
目前解法是在连结器->命令列中加入以下参数
/FORCE:MULTIPLE
这告诉Linker要忽略物件的第二个定义
想请问有没有大大了解其中原因并提供更好的解法@@
谢谢。
作者: LPH66 (-6.2598534e+18f)   2014-11-12 02:20:00
因为你的 Form.h 给很多人用了, 每个用的人都有自己的一份objA, 所以就有这个错误讯息; 正确的做法请查关键字 extern

Links booklink

Contact Us: admin [ a t ] ucptt.com