単純な文字列コマンドをMatlabエンジンに送信しようとしています。
これは私のコードです(行を除いて、私のコードの他の場所にMatlab API関連のコードはありません#include "engine.h"
):
void MatlabPlotter::DrawInMatlab() const
{
std::string PlotCommand = "x=[0 1 2 3 4 5];y=[0 1 4 9 16 25];plot(x, y);";
void * vpDcom = NULL;
int iReturnValue;
engOpenSingleUse(PlotCommand.c_str(), vpDcom, &iReturnValue);
}
コードはコンパイルされ、コンパイラエラーや実行時エラーメッセージなしで正常に実行されます。「Matlabコマンドウィンドウ」が開きます。次のような画面が表示されます。
ご覧のとおり、コマンドウィンドウは空です。画面にプロットウィンドウはありません。
このウィンドウにコマンドを手動で入力すると、次のようにエラーなしでプロットが表示されます。
engOpenSingleUse()
これは、関数の公式ドキュメントページです:http:
//www.mathworks.com/help/techdoc/apiref/engopensingleuse.html
プロジェクトにライブラリを追加<MatlabInstallationDir>\extern\lib\win64\microsoft\libeng.lib
しました(x64デバッグ構成でコンパイルしています)。ヘッダーファイル
をインクルードしました。Matlabのメインウィンドウにコマンドを
入力して(関数のドキュメントページで説明されているように)、MatlabエンジンがOSに登録されていることを確認しました。<MatlabInstallationDir>\extern\include\engine.h
!matlab /regserver
engOpenSingleUse()
engOpenSingleUse()
関数を呼び出しても何も起こらないのはなぜですか?オブジェクト
で文字列コマンドを送信してプロットをプロットすると、プロットウィンドウがポップアップしないのはなぜですか?
私は何が間違っているのですか?PlotCommand
OS:Windows 7 Ultimate x64 SP1、最新の
IDE:Visual Studio 2010、(バージョン10.0.40219.1 SP1Rel)
Matlab:7.8.0(R2009a)