[問題] 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