dlopen在实际设备上返回nil

时间:2019-04-03 18:24:23

标签: ios swift plugins dylib dlopen

我正在尝试在iOS应用程序中动态加载库。

我一直在关注this answer(设置Installation Directory除外)。在模拟器上它可以工作,但不能在实际设备上使用(.framework中的二进制文件也是如此)。

在应用程序中,禁用了库和所有依赖项位代码,目标iOS版本相同(并且我确实重新编译了所需目标设备的所有依赖项)。 .dylib文件已正确加载(使用fopen()打开)。我也对它进行了代码签名:

codesign --sign "iPhone Developer: ... ()"  --force --verbose=4 <path to .dylib>

但没有效果。

(dlopen呼叫:)

let fHandle = filePath.withUnsafeFileSystemRepresentation({dlopen($0, RTLD_LAZY)})

dlerror给出:“ ...文件系统沙箱阻止了mmap()...” filePath是文档目录:

let documentsUrl:URL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first as URL!
let filePath = documentsUrl.appendingPathComponent(filename + ".dylib")

0 个答案:

没有答案