【发布时间】:2011-06-20 20:31:23
【问题描述】:
我正在为 OSX 10.6 开发一个私有框架,其中包括一些命令行工具以及一些 dylib。现在,dylib 需要相互链接,命令行工具需要链接 dylib。
命令行工具和 .dylib 位于框架包内的 Resources 文件夹中。我使用install_name_tool 更新所有路径:
@executable_path/../Frameworks/MyCompany.framework/Versions/A/Resources/lib.dylib
现在,当应用程序使用所有 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
【问题讨论】: