missing required architecture i386 in file

问题描述:今天研究QCAR的iPhone版本,下载Demo后编译报错,如下:

ld: warning: ignoring file ../../build/lib/arm/libQCAR.a, missing required architecture i386 in file

Undefined symbols for architecture i386:

"QCAR::deinit()", referenced from:

-[EAGLView onDestroy] in EAGLView.o

"QCAR::onResume()", referenced from:

-[EAGLView onResume] in EAGLView.o

-[EAGLView updateApplicationStatus:] in EAGLView.o

"QCAR::onPause()", referenced from:

-[EAGLView onPause] in EAGLView.o

"QCAR::setHint(unsigned int, int)", referenced from:

-[EAGLView updateApplicationStatus:] in EAGLView.o

"QCAR::onSurfaceCreated()", referenced from:

-[EAGLView initApplication] in EAGLView.o

"QCAR::onSurfaceChanged(int, int)", referenced from:

-[EAGLView initApplication] in EAGLView.o

"QCAR::setInitParameters(int)", referenced from:

-[EAGLView initQCAR] in EAGLView.o

"QCAR::init()", referenced from:

-[EAGLView initQCAR] in EAGLView.o

"QCAR::Tracker::getInstance()", referenced from:

-[EAGLView loadTracker] in EAGLView.o

-[EAGLView startCamera] in EAGLView.o

-[EAGLView stopCamera] in EAGLView.o

"QCAR::CameraDevice::getInstance()", referenced from:

-[EAGLView startCamera] in EAGLView.o

-[EAGLView stopCamera] in EAGLView.o

-[EAGLView configureVideoBackground] in EAGLView.o

-[OverlayView actionSheet:clickedButtonAtIndex:] in OverlayView.o

"QCAR::Tool::getProjectionGL(QCAR::CameraCalibration const&, float, float)", referenced from:

-[EAGLView startCamera] in EAGLView.o

"QCAR::Renderer::getInstance()", referenced from:

-[EAGLView configureVideoBackground] in EAGLView.o

-[EAGLView renderFrameQCAR] in EAGLView.o

"QCAR::requiresAlpha()", referenced from:

-[EAGLView initRendering] in EAGLView.o

"QCAR::State::~State()", referenced from:

-[EAGLView renderFrameQCAR] in EAGLView.o

"QCAR::State::getNumActiveTrackables() const", referenced from:

-[EAGLView renderFrameQCAR] in EAGLView.o

"QCAR::State::getActiveTrackable(int) const", referenced from:

-[EAGLView renderFrameQCAR] in EAGLView.o

"QCAR::Tool::convertPose2GLMatrix(QCAR::Matrix34F const&)", referenced from:

-[EAGLView renderFrameQCAR] in EAGLView.o

ld: symbol(s) not found for architecture i386

clang: error: linker command failed with exit code 1 (use -v to see invocation)

问题分析:开始以为是没有找到库,重新引用库,无效。后查Google,要删除掉Targets-Build Settings-Library Search Paths,照做,无效。最后找到以下这段:

It seems the library is built for phone deployment (ARM) but you are trying to link it to a simulator executable (x86). This won't work. Rebuild the library for the simulator.

问题解决:切换成Device编译,搞定。