在对象文件和库

时间:2016-03-29 18:21:42

标签: c++ stl android-ndk webrtc c++-standard-library

我为Android(WebRTC)构建了一个库,我现在正尝试使用该库中的函数构建一个示例文件(main.cpp)。编译步骤似乎没问题,但在链接期间我得到了这个:

main.o:main.cpp:function main: error: undefined reference to 'webrtc::CreateSessionDescription(std::string const&, std::string const&, webrtc::SdpParseError*)'

因此,我在main.o中检查了未定义的符号,我看到了:

_ZN6webrtc24CreateSessionDescriptionERKSsS1_PNS_13SdpParseErrorE

在静态库中我看到:

 _ZN6webrtc24CreateSessionDescriptionERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEES8_PNS_13SdpParseErrorE

我在两个版本中都使用相同的NDK,但我不确定SDK WebRTC的Android版本是什么(我在平台/ android-21 /中链接到libs)拱形臂/ usr / lib中)。

我也尝试去捣乱,我的main.o包含:

U webrtc::CreateSessionDescription(std::string const&, std::string const&, webrtc::SdpParseError*)

,而库包含:

T webrtc::CreateSessionDescription(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, webrtc::SdpParseError*)

知道为什么会这样,以及如何避免它?也许使用两个不同版本的字符串标题?

1 个答案:

答案 0 :(得分:0)

确实存在使用libc ++构建库的问题。在libstdc ++上重建使得链接成功。