Link 使用旧库时出错
Link error using old libraries
我正在尝试使用第三方库 (.a),但我没有它的源代码,但它在较旧的应用程序中有效。我将旧应用程序导入 Xcode 7 并成功构建并 运行 它。这些库依赖于扩展名为 .dylib 的系统库该程序仍然有效。
然后我尝试使用相同的库构建一个新的应用程序。但是,我不得不用它们的 .tbd 等效项替换系统库。当我发出构建命令时,出现 link 错误,如下所示,其中库名称为 libavutil.a
ld: library not found for -lavutil
clang: error: linker command failed with exit code 1 (use -v to see invocation
我在堆栈溢出帖子中读到关于需要添加到构建设置中的 'other linker flags'。
我的问题是:
- 我是否需要添加标志(调试和发布),例如 libavutil.a 的 lavutil 或 libc++ 的系统库 -lc++ 的标志?
- 我走在正确的轨道上吗?或者有没有其他的解决办法
link错误。
阅读一些关于其他人遇到的类似链接器错误的 SO 帖子,有人建议我可以将库拖放到 other linker flags
中,而不是添加 -lavutil
类语句window 为多个值打开。这很好用。拖放保持正确的相对目录结构并消除链接器在查找库时可能遇到的歧义。链接器错误已消除,我可以执行程序了。
综上所述,我切换到Xcode 7,将目标更改为9.2,拖动我的第三方库,并构建并运行。
我正在尝试使用第三方库 (.a),但我没有它的源代码,但它在较旧的应用程序中有效。我将旧应用程序导入 Xcode 7 并成功构建并 运行 它。这些库依赖于扩展名为 .dylib 的系统库该程序仍然有效。
然后我尝试使用相同的库构建一个新的应用程序。但是,我不得不用它们的 .tbd 等效项替换系统库。当我发出构建命令时,出现 link 错误,如下所示,其中库名称为 libavutil.a
ld: library not found for -lavutil
clang: error: linker command failed with exit code 1 (use -v to see invocation
我在堆栈溢出帖子中读到关于需要添加到构建设置中的 'other linker flags'。
我的问题是:
- 我是否需要添加标志(调试和发布),例如 libavutil.a 的 lavutil 或 libc++ 的系统库 -lc++ 的标志?
- 我走在正确的轨道上吗?或者有没有其他的解决办法 link错误。
阅读一些关于其他人遇到的类似链接器错误的 SO 帖子,有人建议我可以将库拖放到 other linker flags
中,而不是添加 -lavutil
类语句window 为多个值打开。这很好用。拖放保持正确的相对目录结构并消除链接器在查找库时可能遇到的歧义。链接器错误已消除,我可以执行程序了。
综上所述,我切换到Xcode 7,将目标更改为9.2,拖动我的第三方库,并构建并运行。