2012-08-29
今天准备测试一下61850的lib是否可用,随即新建一个工程,将头文件和库文件全部添加进去,发现链接失败。mytest.cpp中需要用到lib中的一个变量,在库的头文件中没有声明该变量,在mytest.cpp中已经声明。
错误代码为:error LNK2001: unresolved external symbol
测试中发现时无法链接到lib库,当前程序文件为mytest.cpp,当修改程序文件为mytest.c时,就可以完成链接,没有报错。后面查了一下,该lib是C语言编写,可能是C++的程序不能直接调用C语言的lib
解决方法:
在网上查找了一下,C++调用C语言库时需要用到 extern "C" {}
http://wenku.baidu.com/view/80e11c4733687e21af45a9aa.html
http://www.cnblogs.com/jamesmile/archive/2010/10/19/1855469.html
最后在mytest.cpp中加入extern "C" {},将需要用到的变量声明写入{}内即可。
或者在头文件中直接包含变量声明也行(不加extern "C")。因为头文件中已经加入
#ifdef __cplusplus
extern "C" {
#endif
所以可以直接使用