我正在通过在Linux上用C ++将一堆代码与静态库(.a)相链接来构建一个共享库。我有一个静态库中定义的方法。当我使用nm -C打印符号时,静态库显示为:
Alembic::AbcCoreFactory::v9::IFactory::getArchive(std::string const&, Alembic::AbcCoreFactory::v9::IFactory::CoreType&)
符号未在输出.so文件(我正在构建的库)中定义,但是当我使用nm -uC列出未定义的符号时,它会打印:
Alembic::AbcCoreFactory::v9::IFactory::getArchive(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Alembic::AbcCoreFactory::v9::IFactory::CoreType&)
区别在于第一次使用std :: string const&amp;第二个使用std :: __ 1 :: basic_string,std :: __ 1 :: allocator&gt;常量和放大器;
我试图理解为什么它没有找到符号。两者不应该匹配,因为它们基本相同吗?
对于上下文,我正在尝试编译一个Alembic Importer,它随附了Unreal Editor 4 for linux。我试图链接的库是alembic库。
答案 0 :(得分:4)
您正在尝试链接针对 class StoreRequest extends Request
{
public function authorize(){
return true;
}
public function rules(){
return [
'type_id' => 'required|integer',
'external_id' => 'required_if:type_id|in:3|integer',
];
}
}
(clang的标准C ++库)编译的代码和针对libc++
编译的代码(gcc的标准C ++库)。这不会太好用。
检查您的图书馆。
在我的系统上:
libstdc++
在您的系统上,文件可能位于不同的位置,但结果应该是相同的。