Fw: [問題] Windows Form 的LNK2005
※ [本文轉錄自 C_and_CPP 看板 #1FaHuNPW ]
作者: snk521 (哇哈哈) 看板: C_and_CPP
標題: [問題] Windows Form 的LNK2005
時間: Fri Apr 20 16:28:05 2012
小弟是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)
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 轉錄者: snk521 (59.120.184.171), 時間: 04/20/2012 17:08:48
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章
105
152