我有.h和.cpp文件:
say_hi.h:
extern "C" {
void say_hi();
}
say_hi.cpp:
#include <cstdio>
#include "say_hi.h"
void say_hi(){
printf("hello workd!\n");
}
然后我用
编译它g++ -I. -fPIC -c *.cpp
g++ -shared *.o -I. -olibsay_hi.so
然后使用perl内联CPP来调用它:
>perl -e 'use Inline CPP=>q{ \
#include "say_hi.h" \
void test(){return say_hi(); } \
}, INC=>"-I.",LIBS=>"-lsay_hi"; test()'
我来了:
perl: symbol lookup error: /home/xxx/test_so/_Inline/lib/auto/e_8555/e_8555.so: undefined symbol: say_hi
但是,如果我使用下面的.cpp文件测试.so文件 TEST.CPP:
#include "say_hi.h"
main() {
say_hi();
}
编译:
g++ -L. -lsay_hi test.cpp -o test
运行测试:
>test
hello workd!
我的Perl(v5.8.0)有什么问题,或者我错过了什么?
非常感谢!