3
CFBundleCopyExecutableURL函数有时会返回一个绝对URL,有时会返回绝对URL。如果在CFBundleCopyExecutableURL之前调用CFBundleCopyExecutableArchitectures,那么url是绝对的(为什么?) 。如何强制这个函数总是返回绝对URL? 谢谢。CFBundleCopyExecutableURL不返回绝对URL
text getBundleExeutableUrl(text bundlePath)
{
CFURLRef url = CFURLCreateFromFileSystemRepresentation(0,
(char*)bundlePath.c_str(), bundlePath.length(), false);
CFBundleRef bundle = CFBundleCreate(0, url);
CFBundleCopyExecutableArchitectures(bundle); // this is necessary to get absolute path
CFURLRef exeUrl = CFBundleCopyExecutableURL(bundle);
CFStringRef srExe = CFURLCopyFileSystemPath(exeUrl, 0);
text bundleExe = srExe;
CFRelease(srExe);
CFRelease(exeUrl);
CFRelease(url);
CFRelease(bundle);
return bundleExe;
}
谢谢,“文本”类型是我的字符串类,它的名字就像javascript规则。 –
嗯,也许我应该将其命名为text_t(通过c规则,如wchar_t,char16_t,...)。 –