我正在为 OSX 10.6 开发一个私有框架,其中包括一些命令行工具以及一些 dylib。现在,dylib 需要相互链接,命令行工具需要链接 dylib。
命令行工具和 .dylibs 位于Resources
框架包内的文件夹中。我曾经install_name_tool
将所有路径更新为:
@executable_path/../Frameworks/MyCompany.framework/Versions/A/Resources/lib.dylib
现在,所有 dylib 在应用程序使用时都可以正确加载,但运行时命令行工具会失败,dyld: Library not loaded
运行时如下所示:
// dylibpath is an NSString set the the path of the Resources folder within the framework
NSTask *task = [[[NSTask alloc]init]autorelease];
[task setEnvironment:[NSDictionary dictionaryWithObjectsAndKeys:@"DYLD_LIBRARY_PATH", dylibPath, nil]];
[task setLaunchPath:binConvert];
[task launch];
[task waitUntilExit];
现在,我来自 Windows 背景,如果 DLL 与应用程序位于同一文件夹中,加载程序会找到它们,但显然 OSX 会寻找完整路径。如何获取命令行工具以在同一文件夹中查找 dylib?
谢谢,J