【发布时间】:2021-10-24 02:46:56
【问题描述】:
C HelloWorld.so(共享对象)是通过在 C++ myatomic 库中的链接创建的。该 C++ 库使用 Boost Header:
myatomic.cpp
...
#include <boost/system/error_code.hpp>
...
使用 dlopen() 加载 HelloWorld.so 返回错误:_ZTVN10__cxxabiv117__class_type_infoE
如果该 Boost 标头被注释掉,那么 dlopen() 会成功吗?
HelloWorld.yaml
...
Common:
Sources:
- Folder: src
Files:
- HelloWorld.h
- HelloWorld.c
ConanLibs:
- CONAN_PKG::myatomic
Linux:
CompilerOptions:
- -fPIC
LinkerOptions:
- -lstdc++
linux下的Boost C++是否需要用特定的选项来构建?也许 gcc 与 g++ 的问题?
将 -lstdc++ 添加到 HelloWorld 链接器选项,但无济于事。 :(
【问题讨论】:
-
您将 4 个随机库链接到 HelloWorld.so,但没有 boost.system。所有那些
-Wno也不应该在那里。不,您通常不能从 C 中使用 boost 和 C++ 接口。