引用来自32位Xcode项目的64位静态库
Referencing 64-bit static library from a 32-bit Xcode project
我试图在Xcode中使用c++中的echoprint API时构建一个OpenFrameworks项目。OpenFrameworks需要在i386中构建,但echoprint在x86_64中构建。
是否可以从32位项目中引用64位静态库?如果是,我如何在Xcode 4中做到这一点?
这可能是不可能的(至少在Linux上是不可能的),因为指令&寄存器集在x86(32位)和x86-64(64位)上是不同的。
有些人设法用一些肮脏的把戏在Linux上从64位代码调用32位库(.例如;ndiswrapper……)。细节应该很难看。
我建议你的32位软件和64位软件使用不同的进程,并在它们之间使用一些IPC机制。
我能够通过将-arch i386
添加到Makefile开头的OPTFLAGS并在第24行添加$(CXXFLAGS)来构建echopprint -codegen作为Mac OS X和库上的32位可执行文件。我使用的是MacPorts,我确实需要确保用通用变体构建taglib。
写了一个补丁:
diff --git a/src/Makefile b/src/Makefile
index 630efb4..1c9b821 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -2,8 +2,8 @@ UNAME := $(shell uname -s)
CXX=g++
CC=gcc
#OPTFLAGS=-g -O0
-OPTFLAGS=-O3 -DBOOST_UBLAS_NDEBUG -DNDEBUG
-CXXFLAGS=-Wall -I/usr/local/include/boost-1_35 `taglib-config --cflags` -fPIC $(OPTFLAGS)
+OPTFLAGS=-O3 -DBOOST_UBLAS_NDEBUG -DNDEBUG -arch i386
+CXXFLAGS=-Wall -I/usr/local/include/boost-1_35 `taglib-config --cflags` -fPIC $(OPTFLAGS)
CFLAGS=-Wall -fPIC $(OPTFLAGS)
LDFLAGS=`taglib-config --libs` -lz -lpthread $(OPTFLAGS)
@@ -21,7 +21,7 @@ MODULES = $(MODULES_LIB) Metadata.o
all: libcodegen echoprint-codegen
libcodegen: $(MODULES_LIB)
- $(CXX) -shared -fPIC -o libcodegen.so $(MODULES_LIB) -lz
+ $(CXX) $(CXXFLAGS) -shared -fPIC -o libcodegen.so $(MODULES_LIB) -lz
ifeq ($(UNAME),Darwin)
libtool -dynamic -flat_namespace -install_name libcodegen.4.1.1.dylib -lSystem -compatibility_version 4.1 -macosx_version_min 10.6
-current_version 4.1.1 -o libcodegen.4.1.1.dylib -undefined suppress
我把它作为要点保存在这里
相关文章:
- 将应用程序从32位移植到64位时出现问题
- 64位机器上的C++内存对齐
- qmake:检测目标位宽(32 位或 64 位)
- 如何在 64 位 vb.net Windows 应用程序中引用 32 位 dll
- Qt 5.11.2 (Clang 8.0 (Apple), 64 位), 找不到 QJSEngine 文件
- 在 64 位边界上对齐C++结构数组?
- 如何为字符串生成唯一但一致的 N 位哈希(小于 64 位)?
- 在 64 位的 c++ 中运行 mstest 测试
- 在两个线程上读/写 64 位,无互斥/锁定/原子
- 浮点数为 32 位和 64 位二进制表示形式
- 是否有 64 位等效于 GetLastInputInfo / LASTINPUTINFO?
- 在Java(JNI)中与Mingw C 一起编译64位静态LIB
- 如何在 64 位 Linux Mint 上构建最小的静态 Qt 5.2 32 位库
- 使用VS2012 64位的LibPNG静态链接
- 如何使用代码块为MIGW构建64位版本的Oracle OCI静态库(libocia/w/m.a)
- 引用来自32位Xcode项目的64位静态库
- g++32位与64位汇编中的动态与静态链接差异
- 用于发现64位可移植性问题的静态代码分析工具
- 在64位窗口中与qt进行静态链接时出错
- 用静态链接库在64位机器上编译位置无关的可执行文件