我有一个"胖"为iOS构建的框架,用于为macOS构建的调试工具。以前我是静态链接这个框架,虽然XCode抱怨它是为模拟器构建的(因为架构是相同的),但它仍然有效。但是现在,库的新版本是动态的,因此该路径不起作用,因为该工具是一个命令行应用程序,它不支持嵌入框架。
我可以把它变成一个应用程序包,似乎是为了解决这个问题,但是我不确定这会带来什么(创建一个新项目?)。我当然可以弄清楚但是......
与此同时,我想我会使用dlopen()
等动态加载库并检索我需要的类/方法(我已经有一些代码,至少可以编译)。但是,该调用失败并显示以下消息:
no suitable image found. Did find:
/<path to library file>: mach-o, but built for simulator (not macOS)
由于静态链接只是一个警告并且实际上有效,是否有办法使dlopen
也能正常工作?
在这种情况下,重新编译框架本身不适合我。
答案 0 :(得分:0)
您在考虑编辑dylib框架的二进制文件吗?如果在Macho-O
标题中如此,您可以尝试将LC_VERSION_MIN_IPHONEOS
更改为LC_VERSION_MIN_MACOSX
。可能这还不够,但对于快速测试来说这是一个简单的更改。这是MachOView
中这些加载命令的屏幕截图比较
另请参阅here