用c文件编写的一些库函数,在cpp中要使用这些函数,
编译时能够通过,但是连接的时候提示“unresolved external symbol”
我在CPP顶上声明如下:
extern “C” void Func(int i, int j);
然后编译时提示:
error C2732: linkage specification contradicts earlier specification for 'Func'
请问是什么原因,谢谢大家
没有包含相应的静态链接库或者动态链接库,需要在sourse文件中添加
sources里面添加了的,没有问题
被调用的函数在.C文件里面
函数调用的地方在.CPP文件里面
sources是没有问题的,如果我把.CPP文件改为.C文件,就能用了
我在用PB写DLL工程师也出现了“unresolved external symbol”,只是我的原因是因为我在CPP文件里没有定义DEF文件里的函数,
引用: 引用 2 楼 so927 的回复:
sources里面添加了的,没有问题
被调用的函数在.C文件里面
函数调用的地方在.CPP文件里面
sources是没有问题的,如果我把.CPP文件改为.C文件,就能用了
这个我也遇到过。这个cpp通常通过头文件和lib 来做的。
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);
这样就不对