私はOSX10.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がアプリと同じフォルダーにある場合、DLLを見つけますが、明らかにOSXは完全なパスを探します。コマンドラインツールで同じフォルダ内のdylibを検索するにはどうすればよいですか?
ありがとう、J