1

NSCreateObjectFileImageFromMemory関数により、メモリからバンドルをロードできます。この分野で成功した経験を持っている人はいますか?この関数の作業サンプルを持っている人はいますか?私のコードは次のとおりです。

text srcPath = "/Applications/TextEdit.app/Contents/MacOS/TextEdit";
data_t data;
data.loadFromFile(srcPath);
void *addr;
kern_return_t err;
NSObjectFileImage img = nil;
NSObjectFileImageReturnCode dyld_err;

err = vm_allocate(mach_task_self(), (vm_address_t *)&addr,
    data.length(), true);
if(err == 0)
{
    //err = vm_write(mach_task_self(), (vm_address_t)addr,
        //(vm_address_t)(char*)data, data.length());
    memcpy(addr, (char*)data, data.length());
    if(err == 0)
        dyld_err =
            NSCreateObjectFileImageFromMemory(addr, data.length(), &img);
        // error is NSObjectFileImageFailure
}

img変数がnullです(エラーはNSObjectFileImageFailureです)。なんで?

ありがとうございました。

4

1 に答える 1

0

マンページからは、ファイルと友達だけMH_BUNDLEをロードできるようです。NSCreateObjectFileImageFromMemory()

MH_BUNDLEここでファイルについて説明します。

MH_BUNDLEファイルタイプは、実行時にロードするコードで通常使用されるタイプです(通常はバンドルまたはプラグインと呼ばれます)。慣例により、この形式のファイル名拡張子は.bundleです。

マンページは10.4用であり、新しいバージョンが利用できるようには見えないことに注意してください。

于 2012-08-03T12:47:08.670 に答える