我为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*)
知道为什么会这样,以及如何避免它?也许使用两个不同版本的字符串标题?
答案 0 :(得分:0)
确实存在使用libc ++构建库的问题。在libstdc ++上重建使得链接成功。