簡體   English   中英

從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位庫(.eg ndiswrapper ...)。 細節應該非常難看。

我建議讓你的32位軟件與64位軟件不同,並在它們之間使用一些IPC機制。

我能夠在Mac OS X和庫上將echoprint-codegen構建為32位可執行文件,方法是將-arch -arch i386添加到Makefile開頭的OPTFLAGS並在第24行添加$(CXXFLAGS)。我使用MacPorts和I確實需要確保使用通用變體構建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 \

我在這里存儲了一個要點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM