我正在我的库(GCC 4.4.4-14 ubuntu 5.1)上编译 ac 接口,它基本上看起来像这样
标题
extern "C"
{
int foo()
}
执行
int foo()
{}
int bar() __attribute__((alias ("foo")));
这编译得很好,但是当我将共享对象链接到测试应用程序并尝试调用 bar() 时,无法识别该函数。
我尝试将别名行从实现移动到标题,然后出现编译器错误:
bar() aliased to undefined symbol foo
为什么将别名移动到标头会导致此错误?以及如何让这一切正常工作?