我用g++
编译了一个库,我想用gcc
来链接它。
问题是当链接反对我得到一个错误:如何删除共享库中符号周围的字符?
未定义的引用“functionName`
(functionName是在库中的函数名)
虽然功能存在于符号列表中,并在链接时指定gcc
的路径。
这是因为该功能显示在列表中与周围的字符(我认为这是压倒一切?):
Z12functionNameiSt9__va_list
我知道要删除这些字符我应该围绕与extern "C"
函数的声明。我这样做:
//header.hpp
extern "C" int functionName(int argc, ...);
但是周围的字符仍然出现在符号列表中的函数名称周围。这就是为什么gcc
找不到它。
我为Linux手臂yokto交叉编译与arm-poky-linux-gnueabi-gcc
和arm-poky-linux-gnueabi-g++
Ubuntu桌面16
上为什么没有被删除周围人物,我怎么能删除?我永远不会重写这个函数,所以如果这些都是重写的话,我不需要它们。
编辑:
解决。其声明中的函数签名与其定义中的签名不同......因此,关键字extern
毫无用处。
int functionName(int argc, ...); //declaration
int functionName(int argc, va_list args) //definition
也许你忘了'#include' –
@BasileStarynkevitch - 它包含 –