Jac*_*hen 7 c++ macos llvm clang libc++
我想在 macOS 中启用 的调试版本,所以我在[libC++ 的调试版本]libc++中定义,但无法链接. 我猜我的系统中只有release版本,那么如何在macOS中获取debug版本_LIBCPP_DEBUG=1cxx_build_flags libc++libc++libc++
Undefined symbols for architecture x86_64:
"std::__1::__libcpp_db::__decrementable(void const*) const", referenced from:
void std::__1::__nth_element<std::__1::__debug_less<std::__1::__less<float, float> >&, std::__1::__wrap_iter<float*> >(std::__1::__wrap_iter<float*>, std::__1::__wrap_iter<float*>, std::__1::__wrap_iter<float*>, std::__1::__debug_less<std::__1::__less<float, float> >&)
Run Code Online (Sandbox Code Playgroud)
我尝试重新激活该线程,但没有提供更多详细信息的答案。
我有同样的问题。这很容易重现:
#include <string>
int main()
{
std::string name;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
然后编译:
clang++ -D_LIBCPP_DEBUG=1 main.cpp
Run Code Online (Sandbox Code Playgroud)
我们获得:
Undefined symbols for architecture x86_64:
"std::__1::__libcpp_db::__insert_c(void*)", referenced from:
void std::__1::__libcpp_db::__insert_c<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*) in main-7ff3c5.o
"std::__1::__libcpp_db::__erase_c(void*)", referenced from:
std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string() in main-7ff3c5.o
"std::__1::__c_node::~__c_node()", referenced from:
std::__1::_C_node<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::~_C_node() in main-7ff3c5.o
"std::__1::__get_db()", referenced from:
std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_string() in main-7ff3c5.o
std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string() in main-7ff3c5.o
"typeinfo for std::__1::__c_node", referenced from:
typeinfo for std::__1::_C_node<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > in main-7ff3c5.o
"vtable for std::__1::__c_node", referenced from:
std::__1::__c_node::__c_node(void*, std::__1::__c_node*) in main-7ff3c5.o
NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)
如果我使用g++-9brew提供的(真正的g++而不是伪装的Apple Clang编译器),它可以完美编译和运行。
忘记使用libc++的调试模式,这是唯一的解决方案吗?
注意:我在https://forums.developer.apple.com/thread/99194中看到了同样的问题 ,但仍然没有答案。
| 归档时间: |
|
| 查看次数: |
1443 次 |
| 最近记录: |