error LNK2001: unresolved external symbol "class CGPS cyGps" (?cyGps@@3VCGPS@@A)

        这两天在调试程序时,一直出现以下错误信息: 
1>Control1.obj : error LNK2001: unresolved external symbol "class CCESeries * g_SerialObject" (?g_SerialObject@@3PAVCCESeries@@A)
1>Control1.obj : error LNK2001: unresolved external symbol "class CGPS cyGps" (?cyGps@@3VCGPS@@A)
1>TQ2440A_SDK (ARMV4I)\Debug/GpsSerial.dll : fatal error LNK1120: 2 unresolved externals

      出现这错误的原因是在COM控件的接口函数实现Control1.cpp文件中直接定义:extern CCESeries g_SerialObject[4]; extern CGPS cyGps;本来这样定义的目的是为了在Control1.cpp中能够调用class CCESeries (在CESeries.h中定义 )和 class CGPS (在GPS.h中定义) 中的函数,结果出错了。

     解决方法:在头文件CESeries.h中声明 extern  CCESeries  g_SerialObject[4];在Control1.cpp文件中定义

                         CCESeries  g_SerialObject[4]。
                         在头文件GPS.h中声明 extern  CGPS cyGps;在Control1.cpp文件中定义 CGPS cyGps。

  修改:

          由于  g_SerialObject[4] 和 cyGps 只在Control1.cpp被使用,因此在CESeries.h中不用添加这句 extern  CCESeries  g_SerialObject[4];在Control1.cpp中直接定义就可以用。同理,cyGps也是一样的,在 GPS.h中不用声明 extern  CGPS cyGps。

          但是当要用到的变量在多个文件中使用时,就需要在头文件中声明,例如,pGPS被Control1.cpp和GPS.cpp使用,则需要在GPS.h中声明,extern PGPSData pGps,并且在其中一个文件中定义 PGPSData pGps 。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值