你可能不需要了解很多关于gcc插件来理解这个问题
嗨,我正在尝试创建一个使用其他文件为classTree.cpp
和field.cpp
的gcc插件,当我引用其他类时,我从来没有遇到过构建插件的问题:我正在使用这个命令顺便说一下:
g++ -shared -I`g++ -print-file-name=plugin`/include
-I`g++ -print-file-name=plugin`/include/c-family -fPIC -fno-rtti -O2
order_checker.cpp -o plugin.so
并将其用于此:
g++ -fplugin=./plugin.so tinytest.cpp -o toto
如gcc plugins Doc所示,他们还说当我使用其他文件时,我只需要添加我的文件名,如下所示:
g++ -shared -I`g++ -print-file-name=plugin`/include
-I`g++ -print-file-name=plugin`/include/c-family -fPIC -fno-rtti -O2
order_checker.cpp classTree.cpp field.cpp -o plugin.so
当我使用它时,plugin.so
被创建,但当我尝试像以前一样运行它时,我收到此错误:
cc1plus: error: cannot load plugin ./plugin.so
./plugin.so: undefined symbol: _ZTV5field
错误是什么意思?特别是symbol: _ZTV5field
?
答案 0 :(得分:1)
_ZTV5field
是 1 类field
的虚函数表,c++filt
可以告诉您:
$ echo _ZTV5field | c++filt
vtable for field
此符号未定义意味着编译器无法生成此表,这可能意味着类field
具有您忘记实现的虚拟成员函数。
1 。