Delphi OS X无法加载动态库 - 找不到合适的图像

时间:2015-09-06 09:22:49

标签: macos delphi

我根据XE4 ( Firemonkey + iOS Static Library) , Pascal conversion from Objective C Class?创建了一个delphi项目和Objective C动态库,但是要在OS X上运行。

但是dylib不能从delphi项目加载,用以下方法检查加载错误:

handle := dlopen('/<path>/libtest2.dylib', RTLD_LAZY);
  if (handle=0) then
  begin
    p := dlerror();
    SetString(s, p, StrLen(p));
    ShowMessage('failed to load lib: ' + s)
  end

现在我得到的错误是

failed to load lib: dlopen(/<path>/libtest2.dylib, 1): no suitable image found.  Did find:
    /<path>/libtest2.dylib: mach-o, but wrong architecture

有些谷歌搜索,我发现我应该用嘴唇检查架构,并且当我应该对dylib运行时得到架构x86_64,但是当我针对delphi项目运行时我得到了

lipo -info /<path>/Project4.app
fatal error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo: can't map input file: /<path>/Project4.app (Invalid argument)

不确定这是否是我问题的根源,但是没有想法 - 任何建议?也许我应该在OS X中加载动态库?

(Delphi XE6 update 1 OSX 10.10)

更新:实际的delphi二进制文件包含在app文件中,并且挖掘它是i386,这就是问题所在。现在必须弄清楚如何生成i386 dylib。

更新2:好吧,因为Delphi生成32位二进制文​​件,而目标c dylib是64位,它不能是32位。那么Delphi如何与OS X框架接口呢?有一种方法,有人知道怎么做吗?

更新3:使32位dylib关闭ARC,即设置&#39; Objective-C自动参考计数&#39;在构建设置中没有,我们就离开了。希望64位支持将出现在Delphi的下一个版本中 - 升级的原因。

TIA

0 个答案:

没有答案