Visual Studioのターゲットプラットフォームはx64になっていますか?
x64にしてもエラーが出る場合、デバッグ時にengOutputBufferを入れてみると良いですよ。MATLAB上の画面出力が文字列として保存されますので、Cコード上でもpritnfで確認できます。Cコードに以下のコードを入れてみると原因が分かります。
#define BUFSIZE 256
int main()
{
char buffer[BUFSIZE + 1];
buffer[BUFSIZE] = '\0';
engOutputBuffer(ep, buffer, BUFSIZE);
printf("%s\n", buffer);
}
これを付けた上で、私の環境でご質問に載っているCコードを実行したところ、tが未定義というエラーが出ていました。カレントディレクトリがおかしいのかと思い、以下の内容をCコードに追加したところ、
engEvalString(ep, "pwd");
pwdがMATLAB_INSTALL\bin\win64 になっていました。cdに失敗しています。
上記のコードのcdのところで、フォルダのパスをシングルクォーテーションでくくるのではなく、バックスラッシュを2つ重ねてエスケープしてみるとcdに成功します。
// engEvalString(ep, "cd 'C:\Users\user1802\Desktop\source1810'");
engEvalString(ep, "cd C:\\Users\\user1802\\Desktop\\source1810");
あと、実行結果をprintfするところも、そのままではうまくいかなかったので以下のように変更してみてください。
// t_real = mxGetPr(t);
// printf("%f\n", t_real[0]);
double t_real = *mxGetPr(t);
printf("%f\n", t_real);
0 Comments
Sign in to comment.