作者snk521 (哇哈哈)
看板C_Sharp
标题Fw: [问题] Windows Form 的LNK2005
时间Fri Apr 20 17:08:48 2012
※ [本文转录自 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