wcsdup()
Mac OS X 10.6 で動作すると宣伝されているバイナリがありますが、10.7 でのみ追加された機能であるリンクを試みます。これは、10.6.8 での起動時に生成されたバグ レポートからの抜粋です。
プロセス: paradiseperfectboatrescue [149] … コードタイプ: X86-64 (ネイティブ) 親プロセス: launchd [86] … OS バージョン: Mac OS X 10.6.8 (10K549) … ダイルド エラー メッセージ: シンボルが見つかりません: _wcsdup 参照元:…/Paradise Perfect Boat Rescue.app/Contents/MacOS/paradiseperfectboatrescue 想定される場所: /usr/lib/libSystem.B.dylib …
開発者は、何らかの理由で問題を修正していないと、約 6 か月前に報告されています。プログラムツールで問題を回避できる可能性があるかどうか疑問に思っていました。具体的には、dyld にwcsdup()
他の場所から取得するように指示することは可能でしょうか? これは単純な機能であり、不足している唯一の機能であると仮定すると、簡単に実装できます。機会があれば、私が使用する実装は次のとおりです。
#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にこれを行うように指示することは可能ですか?