从 32 位 Xcode 项目引用 64 位静态库
我正在尝试在 Xcode 中使用 C++ 中的 echoprint API 构建 OpenFrameworks 项目。 OpenFrameworks 需要在 i386 中构建,但 echoprint 在 x86_64 中构建。
是否可以从 32 位项目引用 64 位静态库?如果是这样,我该如何在 Xcode 4 中执行此操作?
I'm trying to build an OpenFrameworks project while using the echoprint API in C++ in Xcode. OpenFrameworks requires to be built in i386, but echoprint builds in x86_64.
Is it possible to reference a 64-bit static library from a 32-bit project? If so, how do I do this within Xcode 4?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这可能是不可能的(至少在 Linux 上不可能),因为指令 & x86(32 位)和 x86-64(64 位)上的寄存器集不同。
有些人设法在 Linux 上从 64 位代码调用 32 位库(例如 ndiswrapper ...)。细节应该很丑。
我建议将 32 位软件设置为与 64 位软件不同的进程,并在它们之间使用一些 IPC 机制。
It is probably not possible (at least not on Linux), because the instruction & register sets are different on x86 (32 bits) and x86-64 (64 bits).
Some people managed to make dirty tricks to call 32 bits libraries from 64 bits code on Linux (.e.g. ndiswrapper ...). Details should be very ugly.
I would suggest to make your 32 bit software a different process from the 64 bits one, and use some IPC machinery between them.
通过将
-arch i386
添加到 Makefile 开头的 OPTFLAGS 并在线添加 $(CXXFLAGS),我能够在 Mac OS X 和库上将 echoprint-codegen 构建为 32 位可执行文件24. 我使用 MacPorts,并且确实需要确保使用通用变体构建 taglib。我写了一个补丁:
我将其作为要点存储在此处。
I was able to build echoprint-codegen as a 32-bit executable on Mac OS X and library by adding
-arch i386
to the OPTFLAGS at the beginning of the Makefile and adding a $(CXXFLAGS) on line 24. I use MacPorts and I did need to make sure to build taglib with the universal variant.I wrote a patch:
which I've stored as a gist here.