c++ - 如何在 Mac OS X 上构建和使用动态库?

标签 c++ macos dynamic dylib

我有一个非常简单的问题,过去 6 个小时左右我一直在努力弄清楚。我只想在 Mac OS X 上构建一个动态库,然后使用该库构建一个应用程序。我已经创建了 .dylib 并用它编译了测试应用程序,但是当我运行该应用程序时,我得到:

Joes-Mac-Pro:Desktop Joe$ ./test dyld:未加载库:./lib/simple_library.dylib 引用自:/Users/Joe/Desktop/./test 原因:找不到图片 跟踪/BPT 陷阱:5

我尝试在可执行目录中创建一个 lib 文件夹并将 dylib 放入其中,同样的错误。我试过将 dylib 放在可执行路径本身中,同样的错误。我尝试使用 install_name_tool 更改可执行文件中 dylib 的路径,没有任何变化,同样的错误。我尝试使用 -headerpad_max_install_names 构建测试应用程序,然后使用 install_name_tool 更改路径。仍然没有任何变化。同样的错误。

在 Mac 操作系统上我想做的事情是不可能的吗?我是这个平台的新手,并且习惯于在 Windows 和 GNU/Linux 上顺利工作。另外,我正在尝试使用命令行来完成所有这些工作。我非常希望避免使用 XCode。

编辑:哎呀,我傻了。原来我在我的 install_name_tool 参数中打错了字。现在一切正常。

最佳答案

install_name_tool 是正确的工具。 尝试 otool your_binary 查看缺少哪个 dylib。 还要确保您的二进制文件和链接库是为相同的架构构建的。

关于c++ - 如何在 Mac OS X 上构建和使用动态库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10194961/

相关文章:

Java URLClassloader 挂起

c++ - 正确解析正则表达式中的注释

C++ 返回在函数范围内声明的引用

java - 在 Mountain Lion 上设置 JOGL

c++ - free() 阻塞其他线程,系统变慢

javascript - 迭代使用时,JQuery on Change 事件不会触发

c++ - MPI_Recv 中的消息被截断

C++ 内部类 Ctor 和参数

javascript - mac(本地主机)上的 vue-router 历史模式在直接访问时抛出错误

c# - 扩展 Marc Gravell 的动态 Linq OrderBy