我正在尝试在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")