解决vc C++ 调用 C 函数时unresolved external symbol " __cdecl 。。。无法解析的外部符合
来源:互联网 发布:淘宝怎么显示折扣价 编辑:程序博客网 时间:2024/05/21 17:27
extern AVCodec h264_decoder;
}
直接在Cpp里面写 #include "c.h"引用C头文件会在连接的时候出现此类错误:cpp.obj : error LNK2001: unresolved external symbol "int __cdecl add(int,int)" ([email=?add@@YAHHH@Z]?add@@YAHHH@Z[/email]), 根本原因在于C++ 和 C在对函数命名方式的不同。
C对函数的命名: _add
C++对函数的命名:
解决方案:
- 在不修改原来C头文件的基础之上 ,在cpp文件里面 extern "C" {#include "c.h"} ,extern "C" {} 表示用C的方式解释代码,这样c.h里面的代码及函数都被解释成C形式。
- 或者修改原来C头文件:
#ifdef __cplusplus
extern "C"
{
#endif
/*all of your code in here*/
#ifdef __cplusplus
}
#endif
例子:
c1.h :
#ifndef c1_H
#define c1_H
int addInC1();
#endif
c2.h
#ifndef c2_H
#define c2_H
#ifdef __cplusplus
extern "C"
{
#endif
int addInC2();
#ifdef __cplusplus
}
#endif
#endif
cpp.cpp:
#include "c1.h"
#include "c2.h"
int main()
{
int t1=addInC1();
int t2=addInC2();
};
error:
1 >cpp.obj : error LNK2019: unresolved external symbol _addInC2 referenced in function _main
2>cpp.obj : error LNK2019: unresolved external symbol "int __cdecl addInC1(void)" () referenced in function _main
错误1是找不到C函数 _addInC2 ,错误2是找不到C++函数 ().
解决错误2:
修改 #include "c1.h"
到
extern "C"
{
#include "c1.h"
}
解决错误1:加一个c2.c文件,去实现addInC2.加一个c1.c文件,去实现addInC1.
参考http://www.cnblogs.com/kenkofox/archive/2009/11/05/1597053.html
- 解决vc C++ 调用 C 函数时unresolved external symbol " __cdecl 。。。无法解析的外部符合
- 解决C++ 调用 C 函数时unresolved external symbol "int __cdecl addInC1(void)" (?addInC1@@YAHXZ)之类的错误
- 解决 unresolved external symbol 无法解析
- 转:解决 unresolved external symbol 无法解析
- unresolved external symbol 无法解析
- dcmtk提示无法解析的外部符号(unresolved external symbol)的解决方法
- error LNK2019: unresolved external symbol / error LNK2001: 无法解析的外部符号
- 解决 unresolved external symbol 无法解析 _send@16
- 解决 unresolved external symbol 无法解析 _send@16
- 解决 unresolved external symbol 无法解析 debug release
- 解决 unresolved external symbol 无法解析 _send@16
- 关于VC报unresolved external symbol _WinMain错误的解决
- C和C++相互调用 error LNK2001: unresolved external symbol
- opengl vc++ vs2008 解决 unresolved external symbol
- Pro*C "error LNK2001: unresolved external symbol "void __cdecl sqlcxt" 解决方法
- (已解决!GUID的外部定义和内部定义)VC编译错误:error LNK2001: unresolved external symbol _GUID_DEVINTERFACE_USB_DEVICE
- 无法解析的外部符号 DrvLib_MapIoSpace unresolved symbol
- unresolved external symbol “symbol”(不确定的外部“符号”)。
- Makefile详解
- 再说FlashPlayer的“弹性跑道模型”
- double数据的内存存储方式
- c#值类型和引用类型
- float & double 内存布局
- 解决vc C++ 调用 C 函数时unresolved external symbol " __cdecl 。。。无法解析的外部符合
- C语言中的二级指针(双指针)
- imageNamed和dataWithContentsOfFile的区别
- CImage 处理带透明度png方法
- 2012-1-30雨
- jQuery Mobile 经典入门教程
- 12岁女孩在联合国的演讲
- MFC 更改绘制文字大小方法
- 实现CListBox右键菜单功能