我写了一个使用库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
有人可以帮我吗?抱歉,我不知道如何更改编译器消息的语言。
答案 0 :(得分:0)
似乎问题是,我使用的是yaml-cpp的静态库版本。我改成了一个共享库libyaml-cpp.so,现在已经开始工作了。