使用其他文件构建 gcc 插件
Build gcc plugin using other files
你可能不需要了解很多关于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 插件 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
?
_ZTV5field
是类 field
的虚函数表,c++filt
可以告诉你:
$ echo _ZTV5field | c++filt
vtable for field
此符号未定义意味着编译器无法生成此表,这很可能意味着类 field
具有您忘记实现的虚拟成员函数。
1 在 Itanium ABI 中,gcc 自 3.2 版以来一直在非 Windows 平台上使用。
相关文章:
- 从C++本机插件更新Vector3数组
- 使用CMake创建QML插件
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 奇怪的结构&GCC&clang(void*返回类型)
- GCC本机矩阵运算库
- PowerPC ppc64le上的Gcc Woverloaded虚拟错误
- gcc和c++17的过载解析失败
- 数据成员SFINAE的C++17测试:gcc vs clang
- GCC对可能有效的代码抛出init list生存期警告
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- 使用 GCC 卸载的 OpenMP 卸载失败,并出现"Ptx assembly aborted due to errors"
- 为什么与常规GCC不同,即使有"学究性错误",MinGW-GCC也能容忍丢失的返回类型
- 使用gcc从静态链接的文件中查找可选符号
- 在 Windows 10 中运行 gcc 插件的问题
- GCC插件,添加新的优化杂注
- 使用 gcc 插件获取类注释
- 使用其他文件构建 gcc 插件
- 使用gcc插件修改变量声明的顺序
- Clang/GCC插件,用于解释自定义的c++11属性
- 带有方法的GCC插件在类中声明