链接.cpp文件上的静态库

时间:2012-10-18 14:45:09

标签: c++ c gcc static-libraries .a

我正在尝试编译一些使用名为staticlib.a的静态库中实现的函数的代码。我还有名为staticlib.h的头文件,其中包含该函数的声明。我的main,包含在main.cib文件中,包含staticlib.h,只调用该函数而不是其他函数。所以我编译     gcc main.c staticlib.a 一切正常我需要一些c ++的功能,但如果我在main.cpp中正确更改main.c并以相同的方式编译     gcc main.cpp staticlib.a 发生了对我的功能的未定义引用。我怎样才能使这个工作?为什么会出现这个问题?我无法在我访问的任何网站上找到解释... 谢谢你的所有答案。

2 个答案:

答案 0 :(得分:1)

你必须将库中的函数定义为'C'函数,而不是C ++函数 - 在main.cpp中执行此操作

extern "C"
{
#include "staticlib.h"
}

答案 1 :(得分:1)

C和C ++编译方式不同,C ++使用名称修改(在目标文件中嵌入C ++类型信息)。要停止此行为以便可以从C ++链接到C代码,可以在包含C头文件时在C ++中使用extern C语法。

请看这里 http://www.cplusplus.com/forum/general/1143/