项目中要用到一个模块。看了下该模块的用法,就依葫芦画瓢的搬到自己的代码里面来了。不过在编译的时候碰到了麻烦, 在程序链接的时候出错:“undefined reference to***",应该是因为没有包含相应的库文件吧。
于是比较了make file文件的写法,试图在我这边的makefile 中加上相应的库。但是折腾了半天,未解决。在网上搜了半天,没有点头绪,忽然一个帖子中的一句话提醒了我,“或者就是c++ 和c对同名的函数编译出的函数名字是不一样的。所以呢要extern c”。赶紧看我们的代码!果然,我引用的模块是用c写的,但是它的相应函数没用放在extern C{}内;而我这部分用的是C++。。。
于是在相应部位加上 #ifdef __cplusplus
extern "C" {
#endif
和#ifdef __cplusplus
}
#endif。链接通过了!
一个经验是为了c代码能在C++中方便的使用,一定要在c程序相应头文件中加上 extern "C"。