1

私は現在、Matlab で明らかにばかげた問題に直面していますが、何が間違っているのかわかりません (または、間違っていると思いますが、うまくいくように言われています)。

ライブラリ「mylib.dll」内でコンパイルされた(または「生きている」)Cプログラム関数「myfunc.c」を使用する必要があるMatlabスクリプト「myscript.m」があります。「myscript.m」が「myfunc.c」にアクセスして実行するために、「myscript.m」で呼び出される「myfunc.m」Matlab スクリプトもあります。ただし、「myfunc.m」は、いくつかのコメントを除いて、完全に空のファイルです (特定の形式やパターンもありません)。これらのファイルはすべて私に渡され、「myfunc.m」はラッパーとして機能しているため、Matlab は「myfunc.c」を正しく実行する必要があると言われています。

私が抱えている問題は、もちろん機能していないことです。「myscript.m」の行を実行すると、次のようになります。

output1 = myfunc(input1, input2);

スクリプトを関数として実行しようとしているという Matlab エラーが表示されます。私の考えでは、「myfunc.m」が空であるため(コードではないコメントを除く)、入力を送信し、どちらも持たないと述べられているものに出力を要求しているため、これは正しいです。

「mylib.dll」内のCコードにアクセスしたいことをMatlabが(そのままで)知る方法はないと思います。また、loadlibrary を使用して Matlab にライブラリをロードできるように、ヘッダー ファイル「mylib.h」もありません。

私の質問は、現在の説明を考えると、この実行はまったく機能するのでしょうか? それを機能させる方法、または私が見逃しているものはありますか? 1 つの可能性として、これは古いラッパー形式であり、現在は機能していない可能性があります。

誰かが何かを知っているか、提案があれば、大歓迎です。ありがとう!!!

ヒューゴ

4

2 に答える 2

0

myfunc.c は mex ファイルのようです。コマンドを使用してMatlabでコンパイルしてみてくださいmexdll拡張子は、おそらく古いバージョンのmatlab です。

于 2012-12-03T15:07:50.250 に答える
0

で試しましたloadlibraryか?.h ファイルが必要ですが、関数のプロトタイプがわかっている場合は簡単に再作成できます。

于 2012-12-03T21:32:04.663 に答える