首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从32位Xcode项目引用64位静态库

从32位Xcode项目引用64位静态库
EN

Stack Overflow用户
提问于 2011-11-30 06:40:17
回答 2查看 631关注 0票数 0

我正在尝试构建一个OpenFrameworks项目,同时在Xcode中使用C++中的echoprint API。OpenFrameworks需要在i386中构建,但echoprint是在x86_64中构建的。

可以从32位项目中引用64位静态库吗?如果是这样,我该如何在Xcode 4中做到这一点呢?

EN

回答 2

Stack Overflow用户

发布于 2011-11-30 06:43:40

一些人设法使出肮脏的把戏,在Linux上从64位代码调用32位库(.e.g。ndiswrapper ...)。细节应该是非常丑陋的。

我建议将32位软件与64位软件进行不同的处理,并在它们之间使用一些IPC机制。

票数 2
EN

Stack Overflow用户

发布于 2011-11-30 10:10:55

通过在Makefile的开头将-arch i386添加到OPTFLAGS,并在第24行添加$(CXXFLAGS),我能够在Mac和库上将echoprint codegen构建为32位可执行文件。我使用MacPorts,并且我确实需要确保使用通用变体构建标记库。

我写了一个补丁:

代码语言:javascript
复制
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 \

我已经将其存储为gist here

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8318774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档