我正在创建一个共享库,但是当尝试使用该库时,我得到了对'calculate()'的未定义引用。
该库由几个这样编译的C ++文件组成
g++ -c -fPIC main.cpp a.cpp b.cpp c.cpp
然后变成这样的共享库
g++ -shared -o libtest.so main.o a.o b.o c.o
我有一个名为debug.cpp的文件,试图使用该库
#include "libtest.h"
int main() {
calculate();
}
标题如下
typedef struct MyStruct {
float a;
float b;
float c;
float d;
float e;
float f;
float g;
float h;
} MyStruct;
MyStruct calculate();
在main.cpp中,我有以下内容
extern "C" MyStruct calculate() {
MyStruct test = {1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5};
return test;
}
然后当我尝试使用该库时,采用以下方式
g++ debug.cpp -L. -ltest
编译器抱怨
debug.cpp:(.text+0x1f): undefined reference to `calculate()'
当我做nm -g libtest.so
时看到
000000000003272b T calculate
我不确定为什么会这样,感谢任何帮助或见解。