[問題] VS2012 windows form 自定義class宣告

看板C_and_CPP (C/C++)作者 (運動家)時間11年前 (2014/11/12 02:05), 11年前編輯推噓1(101)
留言2則, 1人參與, 最新討論串1/1
開發平台(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要忽略物件的第二個定義 想請問有沒有大大了解其中原因並提供更好的解法@@ 謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.164.12.240 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1415729151.A.2E4.html ※ 編輯: Sportsman (218.164.12.240), 11/12/2014 02:07:07

11/12 02:20, , 1F
因為你的 Form.h 給很多人用了, 每個用的人都有自己的一份
11/12 02:20, 1F

11/12 02:20, , 2F
objA, 所以就有這個錯誤訊息; 正確的做法請查關鍵字 extern
11/12 02:20, 2F
感謝LPH66大大,問題已順利解決了~~ ※ 編輯: Sportsman (140.116.247.193), 11/12/2014 15:51:22
文章代碼(AID): #1KOa__Ba (C_and_CPP)
文章代碼(AID): #1KOa__Ba (C_and_CPP)