Matlab が提供するエンジン ヘッダーを含む C++ プログラムをコンパイルしようとしています。ファイル MLP.cpp には以下が含まれます。
#include <engine.h>
#include <stdlib.h>
#include <iostream>
#include <string>
using namespace std;
以下のエラーで強調表示されている matlab 関数を参照します。実行時:
g++ -c MLP.cpp -I/usr/local/matlab/extern/include -L/usr/local/matlab/extern/lib -llibeng -llibmx -lmatlab
g++ MLP.o -o main
次のエラーが表示されます。
MLP.o: In function `MatLabPredictor::MatLabPredictor(char*)':
MLP.cpp:(.text+0x18): undefined reference to `engOpen'
MLP.cpp:(.text+0x36): undefined reference to `engEvalString'
MLP.cpp:(.text+0x4a): undefined reference to `engEvalString'
MLP.cpp:(.text+0x5e): undefined reference to `mxCreateDoubleMatrix'
MLP.cpp:(.text+0x79): undefined reference to `mxGetPr'
MLP.o: In function `MatLabPredictor::~MatLabPredictor()':
MLP.cpp:(.text+0xa1): undefined reference to `engClose'
MLP.o: In function `MatLabPredictor::retrain(double)':
MLP.cpp:(.text+0x104): undefined reference to `engPutVariable'
MLP.cpp:(.text+0x118): undefined reference to `engEvalString'
MLP.cpp:(.text+0x12c): undefined reference to `engEvalString'
MLP.cpp:(.text+0x140): undefined reference to `engEvalString'
MLP.o: In function `MatLabPredictor::predict_next_value()':
MLP.cpp:(.text+0x162): undefined reference to `engEvalString'
MLP.cpp:(.text+0x176): undefined reference to `engGetVariable'
MLP.cpp:(.text+0x186): undefined reference to `mxGetData'
MLP.cpp:(.text+0x199): undefined reference to `mxDestroyArray'
collect2: ld returned 1 exit status
また、コンパイル コマンドを次のように変更しようとしました。
g++ -c MLP.cpp -I/usr/local/matlab/extern/include -L/usr/local/matlab/bin/glnxa64 -llibeng -llibmx -lmatlab
g++ MLP.o -o main