【问题标题】:Trouble linking libraries when building a C MEX file in Xcode在 Xcode 中构建 C MEX 文件时无法链接库
【发布时间】:2014-01-21 12:06:36
【问题描述】:

我正在尝试在 Xcode(版本 4.6.3)中构建一个 MATLAB MEX 文件以进行调试。我已经能够使用以下命令在 MATLAB (R2013a) 中成功编译程序:

>> mex src/main.c src/binomial.c src/gaussian1.c src/gaussianU.c src/poisson.c -Iinclude -I/usr/local/include -L/usr/local/lib -lmpfr -output cpdetect_c

当我尝试在 Xcode 中构建它时,程序编译成功,但在链接阶段构建失败并出现如下错误:

Undefined symbols for architecture x86_64:
  "_mexErrMsgIdAndTxt", referenced from:
      _mexFunction in main.o
  "_mexPrintf", referenced from:
      _find_gaussian1_change_point in gaussian1.o
      _cpdetect in main.o
      _find_poisson_change_point in poisson.o
  "_mpfr_add", referenced from:
      _find_gaussian1_change_point in gaussian1.o
      _find_gaussianU_change_point in gaussianU.o
      _find_poisson_change_point in poisson.o
  "_mxCreateDoubleMatrix_730", referenced from:
      _mexFunction in main.o

this post中所述,我在Xcode中有以下设置:

>> Other Linker Flags: -lmx -lmex -lmat -lmpfr
>> Header Search Paths: $(MATLABROOT)/extern/include /Users/myName/Documents/MATLAB/SingleMolecule/Current_Version/cpdetect_c_mex/include /usr/local/include
>> Library Search Paths: $(MATLABROOT)/bin/maci64 /usr/local/lib

但这显然不足以成功链接。我错过了什么?
感谢您的任何建议!

【问题讨论】:

    标签: c xcode matlab linker mex


    【解决方案1】:

    经过更多的研究和修补,我找到了解决方案。除了设置链接器标志、标题搜索路径和库搜索路径(在构建设置下),如我最初的帖子中所述,有必要告诉 Xcode(第二次)链接库,如下所示:

    1) 选择“目标”并转到“构建阶段”。

    2) 如果您没有看到“Link Binary with Libraries”项,请转到 Editor>Add Build Phase 菜单并选择“Add Link Binary with Libraries Build Phase”。

    3) 单击加号并选择您需要链接的库。文件名具有前缀 lib 和扩展名 .dylib;例如,mpfr 库是 libmpfr.dylib。

    希望这对某人有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-18
      • 1970-01-01
      相关资源
      最近更新 更多