c++ c 混合编程的 undefined reference问题

使用C++编程时,有时要用到第三方的库,而第一方库是以C给出的,奇怪的是明明已经把C文件加入工程,头文件也已经引入,编译里还是出现

undefined reference

问题在这里,第三方的C库的头文件没有加入extern "C",在C文件的头文件加入如下即可

#ifdef  __cplusplus  

extern "C" {  

#endif  

/* C头文件的其它声明 */

 

#ifdef  __cplusplus  

}  

#endif  /* end of __cplusplus */

时间: 2024-10-10 19:51:17

c++ c 混合编程的 undefined reference问题的相关文章

Linux下运行《UNIX环境高级编程》undefined reference to `err_quit 编译出错的处理方法

错误信息: : undefined reference to `err_quit': undefined reference to `err_sys' 解决方法: 因为err_quit跟err_sys是作者自己定义的错误处理函数.所以最简单的解决办法是修改下apue.h文件,如下 /* * Our own header, to be included before all standard system headers. */ #ifndef _APUE_H #define _APUE_H #d

undefined reference to...

Linux 下编程出现undefined reference to... 原因分析: 1.链接时缺失了相关目标文件(.o) 2.链接时缺少相关的库文件(.a/.so) 3.    链接的库文件中又使用了另一个库文件 4 多个库文件链接顺序问题 在链接命令中给出所依赖的库时,需要注意库之间的依赖顺序,依赖其他库的库一定要放到被依赖库的前面,这样才能真正避免undefined reference的错误,完成编译链接. 5. 在c++代码中链接c语言的库 参考http://blog.csdn.net/

"undefined reference to" 多种可能出现的问题解决方法

最近在Linux下编程发现一个诡异的现象,就是在链接一个静态库的时候总是报错,类似下面这样的错误: (.text+0x13): undefined reference to `func' 关于undefined reference这样的问题,大家其实经常会遇到,在此,我以详细地示例给出常见错误的各种原因以及解决方法,希望对初学者有所帮助. 1.  链接时缺失了相关目标文件(.o)     测试代码如下: 然后编译. gcc -c test.c gcc –c main.c 得到两个 .o 文件,一

C和C++混合编程(__cplusplus 与 external "c" 的使用)

转自:http://blog.csdn.net/ljfth/article/details/3965871 第一种理解比如说你用C++开发了一个DLL库,为了能够让C语言也能够调用你的DLL输出(Export)的函数,你需要用extern "C"来强制编译器不要修改你的 函数名. 通常,在C语言的头文件中经常可以看到类似下面这种形式的代码: #ifdef __cplusplus extern "C" { #endif /**** some declaration o

【调试经验】C++和C的混合编程以及库调用

问题背景 这两天在移植一个开源的库,偏底层的那种,所以对架构有一些依赖.源码的编译是通过Makefile来构建,怎奈公司的架构用的是CMAKE,所以就在开源的顶层和子目录分别构建了CMakeList,但奇怪的是CMAKE产生顶层的Makefile在编译阶段并没有执行,试了一些方法后还是不行,迫于时间压力,只能把项目中用到的源文件提取出来,放到一个文件夹内,单独写CMakeList,最终产生了一个静态库.但是在链接的时候产生了错误,相关函数没定义,又是熟悉的undefined reference

Linux下编译程序时,经常会遇到“undefined reference to XXX” 报错,

Linux下编译程序时,经常会遇到“undefined reference to XXX” 报错, 这里总结一些可能的原因和解决方案,给需要的朋友: 说道undefined reference error,先提一下Linux gcc链接规则: 链接的时候查找顺序是: -L 指定的路径, 从左到右依次查找 由 环境变量 LIBRARY_PATH 指定的路径,使用":"分割从左到右依次查找 /etc/ld.so.conf 指定的路径顺序 /lib 和 /usr/lib (64位下是/lib

[Qt解错篇]报错:error: undefined reference to vtable for ClassName

一.问题描述: 编译工程时报错:error: undefined reference to vtable for ClassName,如图示: 二.问题分析: 造成这种错误的原因很多,甚至在纯C++编程过程中也可能出现.下面根据自己情况,具体问题具体分析. 原因:在原先没有Q_OBJECT关键字的工程中添加了该关键字,但是没有执行qmake,直接编译导致出现该错误. 三.例子: 原先工程的类建立: class CAppConfig { public: CAppConfig(void); CApp

[转]"undefined reference to" 问题解决方法

转载未能找到原文出处. 最近在Linux下编程发现一个诡异的现象,就是在链接一个静态库的时候总是报错,类似下面这样的错误: (.text+0x13): undefined reference to `func' 关于undefined reference这样的问题,大家其实经常会遇到,在此,我以详细地示例给出常见错误的各种原因以及解决方法,希望对初学者有所帮助. 1.  链接时缺失了相关目标文件(.o)     测试代码如下: 然后编译. gcc -c test.c gcc –c main.c

离奇“undefined reference”错误分析与解决方案

离奇“undefined reference”错误分析与解决方案 “undefined reference to XXX”是一类挺常见的链接错误,原因通常是链接时找不到声明成extern类型的函数的定义点.不过这次遇到的undefined reference中的XXX函数明明在一个库中定义,而且该库明明已经在命令行用-l指定了,ld –verbose也显示能找到该库文件. Table of Contents 1 快速解决方案 2 从extern说起 3 链接时符号定位 4 解决方案背后的门道 4