platformBuilder中调用C函数时,连接时出现问题,unresolved external symbol

keye200   2010-5-13 16:07 楼主
用c文件编写的一些库函数,在cpp中要使用这些函数,

编译时能够通过,但是连接的时候提示“unresolved external symbol”

我在CPP顶上声明如下:
extern “C” void Func(int i, int j);

然后编译时提示:
error C2732: linkage specification contradicts earlier specification for 'Func'

请问是什么原因,谢谢大家

回复评论 (5)

没有包含相应的静态链接库或者动态链接库,需要在sourse文件中添加
点赞  2010-5-13 16:30
sources里面添加了的,没有问题

被调用的函数在.C文件里面
函数调用的地方在.CPP文件里面

sources是没有问题的,如果我把.CPP文件改为.C文件,就能用了
点赞  2010-5-13 20:58

4楼 tsz 

我在用PB写DLL工程师也出现了“unresolved external symbol”,只是我的原因是因为我在CPP文件里没有定义DEF文件里的函数,
点赞  2010-5-13 21:55
引用: 引用 2 楼 so927 的回复:
sources里面添加了的,没有问题

被调用的函数在.C文件里面
函数调用的地方在.CPP文件里面

sources是没有问题的,如果我把.CPP文件改为.C文件,就能用了


这个我也遇到过。这个cpp通常通过头文件和lib 来做的。
点赞  2010-5-13 23:11
extern "C" void Func(int i, int j);
如果你的cpp文件包含的头文件里有 void Func(int i, int j) 的声明,这样做会导致声明冲突

比如 void Func(int i, int j) 在 func.h 中已经声明,在 func.c 中实现
cpp文件中
extern "C"
{
    #include "func.h"
}
或者不 #include "func.h"
声明
extern "C" void Func(int i, int j);

但是
#include "func.h"
extern "C" void Func(int i, int j);
这样就不对
点赞  2010-5-14 15:44
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复