gpt4 book ai didi

c++ - 如何将 C++ 库静态链接到 OSX 中的 C 应用程序?

转载 作者:行者123 更新时间:2023-11-30 17:18:26 25 4
gpt4 key购买 nike

我浏览了有关该主题的其他类似问题,我认为我缺少一些特定于 OSX 的内容。

我正在尝试将 Basho 的 LevelDB 分支静态链接到我的 C 应用程序(因为 LevelDB 的打包版本将使用 Google 的主线)。即使使用 c++ 链接器并将 -lc++ 添加到命令行,我仍然会遇到有关缺少 c++ STL 符号的错误,例如:

"std::string::_Rep::_M_destroy(std::allocator const&)", referenced from: _leveldb_open in libleveldb.a(c.o)

奇怪的是,我知道我正确启用了 C++ 位,因为我还链接到 libsnappy,并且在添加链接指令之前,有未解析的 libsnappy 符号(显然)现在已被清除。

据我所知,我有最新版本的 xcode 和编译器链的其余部分。 libleveldb 也使用与我的常规应用程序相同的工具链进行编译。这是我正在尝试的命令行:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -g -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/get_rid_status.dir/get_rid_status.c.o -o get_rid_status /usr/local/lib/libdb.a /usr/lib/libssl.dylib /usr/lib/libcrypto.dylib /usr/lib/libaprutil-1.dylib /usr/lib/libapr-1.dylib -lpthread -ldl -lm -lz leveldb/libleveldb.a /usr/local/lib/libsnappy.dylib -lc++

我正在链接 c++ 链接器并使用 -lc++ 添加 c++ 标准库,但无济于事。

更新找到了正确答案,可以在下面找到。感谢当我最初在这里回答自己的问题时告诉我正确礼仪的用户。

最佳答案

事实证明,leveldb 添加了一些我一开始没有注意到的额外链接器标志。罪魁祸首是 -mmacosx-version-min=10.8。将该标志添加到我的 C 应用程序的链接步骤中,使所有内容都对齐。

关于c++ - 如何将 C++ 库静态链接到 OSX 中的 C 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29174209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com