我有一个二进制文件,被宣传为在 Mac OS X 10.6 上工作,但它试图链接wcsdup()
,这是一个仅在 10.7 中添加的函数。这是在 10.6.8 上启动时生成的错误报告的摘录:
流程:天堂完美救船[149] … 代码类型:X86-64(本机) 父进程:launchd [86] … 操作系统版本:Mac OS X 10.6.8 (10K549) … Dyld 错误信息: 未找到符号:_wcsdup 引用自:…/Paradise Perfect Boat Rescue.app/Contents/MacOS/paradiseperfectboatrescue 预期在:/usr/lib/libSystem.B.dylib …
开发人员出于某种原因尚未解决该问题,大约 6 个月前报告。我想知道是否有希望规避编程工具的问题。具体来说,是否可以指示 dyldwcsdup()
从其他地方获取?这是一个简单的功能,假设它是唯一缺少的功能,它可以很容易地实现。如果有机会,这是我将使用的实现:
#include <wchar.h>
#include <string.h>
#include <stdlib.h>
wchar_t* wcsdup (const wchar_t *s)
{
size_t len = wcslen(s) + 1;
len *= sizeof(wchar_t);
wchar_t *d = malloc(len);
if (d)
return memcpy(d, s, len);
else
return 0;
}
我曾DYLD_LIBRARY_PATH
在其他情况下使用过,但后来我想帮助 dyld 找到它错过的整个库。这次我的目标不是提供一个全新的库,而是用一些函数来补充现有的库,这些函数使用正在补充的库中的函数。是否可以告诉 dyld 这样做?