2017-04-15 169 views
0

我写了一个使用库yaml-cpp的C++程序。我使用cmake自己构建它,并且该库现在位于/usr/local/lib/libyaml-cpp.a。 在我的eclipse项目中,构建程序正常工作。mex编译期间的链接错误

为了测试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

看来,问题是,我使用了一个静态库版本的yaml-cpp。我改成了共享库libyaml-cpp.so,现在就完成了。