gpt4 book ai didi

c++ - xcode:添加链接器标志和 "link binary with libraries"之间的区别

转载 作者:搜寻专家 更新时间:2023-10-31 01:06:14 25 4
gpt4 key购买 nike

我几天前从 Windows 切换过来,我发现 xcode 中的链接过程有点困惑。我有一个我想使用的静态库,叫做 nag C 库,它的文件是“libnagc_nag.a”。如果我将“/opt/NAG/clmi623dgl/lib/libnagc_nag.a”添加到“其他链接器标志”,程序运行完美。另一方面,如果我转到“Build Phases -> link binary with libraries -> + -> add other”并添加“libnagc_nag.a”,库文件现在出现在项目导航器中,但在之后出现以下错误构建成功并尝试运行它。

dyld: Library not loaded: 
/fserver/mo/cl23/CL23.3/CLMI623DG_build/BUILD_mac_64/climp/LIBS/nag_lm/libnagc_nag.dylib
Referenced from: /Users/german/Library/Developer/Xcode/DerivedData/myproj-bjepqyzlzkayspddtaspmmzxgaid/Build/Products/Debug/myproj
Reason: image not found

我的问题是:

为什么不一样?它认为它是一个动态库吗?第二种情况如何解决这个问题?

最佳答案

编辑:我删除了指向我找到答案的文章的链接,因为它已经过时了。

问题是动态库和静态库的链接器标志是相同的,并且文件扩展名已从中删除。所以,如果你有一个同名的静态库和一个动态库,只是扩展名不同,链接器将默认选择库的动态版本。即使您在“链接二进制文件与库”菜单中选择了静态版本,也会发生这种情况。然后,如果应用程序找不到动态库就会出错。所以,问题的答案是:

1) 如果没有同名的动态库,它不会有任何区别。 2) 链接器只知道库名,所以默认选择动态版本。 3) 解决方案可以是重命名库或者使用第一种方法。

关于c++ - xcode:添加链接器标志和 "link binary with libraries"之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21173913/

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