我正在尝试创建dylib,然后将其添加到项目中。
我使用“可可库”模板创建它,并将类型设置为“动态”(不确定它应该是动态的还是静态的)。然后我创建了一个名为test的简单obj-c类,并在其中编写了一个方法,打印出一些内容供控制台使用。
我编译并使用生成的.dylib文件并将其放入另一个项目中。现在,每当我尝试使用它时,我就在运行时得到这个消息。
dyld: Library not loaded: /usr/local/lib/TESTLib.dylib
Referenced from: /Users/***/Library/Developer/Xcode/DerivedData/TestingDYLIB-axmoocnxbwznoyerfogosumqufxc/Build/Products/Debug/TestingDYLIB.app/Contents/MacOS/TestingDYLIB
Reason: image not found
我还创建了一个复制文件阶段,并将目的地设置为“框架”。我仍然有同样的错误。
我做错什么了?谢谢。
最佳答案
问题不是XCODE在编译时正在寻找库,这是Simon Whitaker的答案。
问题是,使用DyLIB的应用程序在运行时找不到它。当使用动态库构建应用程序时,它会将dylib的安装名复制到输出二进制文件中。
创建复制文件阶段并将dylib复制到应用程序包的frameworks子目录是正确的做法。
但是,您需要执行额外的步骤。您需要使用适合捆绑应用程序的安装名称编译动态库。默认情况下,将创建一个安装名为/usr/local/lib的动态库。应用程序找不到你的库,因为它不存在。即使你把图书馆放在那里,你的用户肯定不会有,所以这是错误的解决方案。
正确的解决方案是将库与应用程序捆绑在一起。要设置动态库的安装名称,请进入动态库项目并将“动态库安装名称”选项设置为:@executable\u path/。/frameworks/libmydynamiclibrary.dylib
关于objective-c - XCode 4添加dylib,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6801709/