在mex编译期间链接错误

时间:2017-04-15 19:33:42

标签: c++ matlab mex

我写了一个使用库yaml-cpp的c ++程序。我使用cmake自己构建它,库现在位于/usr/local/lib/libyaml-cpp.a。 在我的eclipse项目中,构建程序运行正常。

为了测试matlab中的程序输出,我还将程序嵌入到mex包装器中。 我尝试编译以下mex命令:

prefix = '../../Synthesizer/src/'; 
mex ('-g', '../mex/synth_process_mex.cpp', [prefix 'test/TestClient.cpp'], [prefix 'Synth.cpp'], ...
    [prefix 'DataReader.cpp'], [prefix 'StochasticDataReader.cpp'], [prefix 'GlobalMath.cpp'],...
    [prefix 'Sinusoid.cpp'], [prefix 'Interpolator.cpp'], [prefix 'OSCReceiver.cpp'],...
    [prefix 'Voice.cpp'], '-lyaml-cpp');

这一直很好用,直到我开始使用yaml-cpp库。现在,Matlab返回以下错误消息:

Error using mex
/usr/bin/ld: //usr/local/lib/libyaml-cpp.a(parse.cpp.o): Die Umlagerung von
//usr/local/lib/libyaml-cpp.a: error adding symbols: Ungültiger Wert
collect2: error: ld returned 1 exit status

有人可以帮我吗?抱歉,我不知道如何更改编译器消息的语言。

1 个答案:

答案 0 :(得分:0)

似乎问题是,我使用的是yaml-cpp的静态库版本。我改成了一个共享库libyaml-cpp.so,现在已经开始工作了。