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变量为空(错误为 NSObjectFileImageFailure)。为什么?

谢谢你。

4

1 回答 1

0

manpage看来,只能MH_BUNDLE加载文件NSCreateObjectFileImageFromMemory()和朋友。

MH_BUNDLE文件在这里解释。

MH_BUNDLE 文件类型是您在运行时加载的代码(通常称为包或插件)通常使用的类型。按照惯例,这种格式的文件扩展名是 .bundle。

请注意,该手册页适用于 10.4,并且似乎没有可用的更新版本。

于 2012-08-03T12:47:08.670 回答