[問題] Windows Form 的LNK2005
小弟是Windows Form的新手,在這邊想請教一個關於LNK2005的問題。
我是用VS2008的CLR windows Form來寫程式的,我的專案名稱叫Basis。
而Form的名稱就很簡單叫Form1,而專案中還有一個cpp file A.cpp和header file A.h。
今天我在A.h利用typedefine宣告了一個函數指標
============================= A.h =============================
typedef INT ( WINAPI * P_fnSFCSDB_Initialize )(void);
P_fnSFCSDB_Initialize fnSFCSDB_Initialize;
================================================================
並在A.cpp用了,這樣使用是沒問題的。
問題來了!我的Form1也要使用同樣的函數,所以我在Form1.h中include了A.h,
結果compile後,造成
A.obj : error LNK2005: "int (__stdcall* fnSFCSDB_Initialize)(void)"
(?fnSFCSDB_Initialize@@3P6GHXZA) 已在 Basis.obj 中定義過了
其中fnSFCSDB_Initialize就是我宣告的函式,我在想這是不是因為我用
type define 重複定義造成的。還是因為Windows Form的程式主體在Form1.h造成的?
想請問我要怎麼改才可以修掉這個LNK error?
=========================================================
我有想過用extern 全域變數的方式加在函式前,可是又會變成
error LNK2020: 無法解析的語彙基元 (0A000014)
"int (__stdcall* fnSFCSDB_SendMsg)(int,char *,char *)"
(?fnSFCSDB_SendMsg@@3P6GHHPAD0@ZA)
想請各位大大給我個意見吧
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.120.184.171
※ 編輯: snk521 來自: 59.120.184.171 (04/20 16:35)
※ 編輯: snk521 來自: 59.120.184.171 (04/20 16:52)
※ 編輯: snk521 來自: 59.120.184.171 (04/20 16:52)
※ 編輯: snk521 來自: 59.120.184.171 (04/20 16:57)
※ snk521:轉錄至看板 C_Sharp 04/20 17:08
推
04/20 17:17, , 1F
04/20 17:17, 1F
→
04/20 18:08, , 2F
04/20 18:08, 2F
→
04/20 18:09, , 3F
04/20 18:09, 3F
→
04/20 18:10, , 4F
04/20 18:10, 4F