mexファイルからdllを生成する方法

6 views (last 30 days)
NAOKI FUKUDA
NAOKI FUKUDA on 12 Jun 2018
Commented: michio on 12 Jun 2018
他の古いバージョンのmatlabで作成されたmexファイルを受け取りmatlab2018でコンパイルしようとしたのですがうまくいきませんでした。 バージョンが違うとコンパイルはできないのでしょうか? 拡張子はmexw32です。よろしくお願いいたします。

Answers (1)

michio
michio on 12 Jun 2018
Edited: michio on 12 Jun 2018
MATLAB の 32-bit/64-bit の不一致が主な原因かとみられます。
mexw32 ということは 32-bit MATLAB にてコンパイルされたものと見受けられますが、R2018a は 64-bit 版を使用されているかと思います。32-bit MATLAB は R2015b で提供が終了しています。64-bit OS 上にも 32-bit MATLAB をインストールすることはできますので、R2015b 以前のバージョンを使うというのも方法の1つです。
  2 Comments
NAOKI FUKUDA
NAOKI FUKUDA on 12 Jun 2018
ご回答ありがとうございます。 早速R2008aをインストールしようとしたところ、うまくインストールできませんでした。 試しにcファイルを mex 'ファイル名.c' のように実行したところ、
mex ファイル名.c 'Xcode with Clang' でビルドしています。 /'フォルダ名'/'ファイル名.c':23:10: warning: non-portable path to file '"ファイル名.h"'; specified path differs in case from file name on disk [-Wnonportable-include-path] #include "ファイル名.h" ^~~~~~~~~~~~~ "ファイル名.h" /'フォルダ名'/'ファイル名.c':66:33: warning: illegal character encoding in string literal [-Winvalid-source-encoding] printf("error : Fopen() 8E<B8><94>s<82>ナ<B7><81>B\n" ); ^~~~~~~~~~~~ ~~~~ ~~~~~~~~ /'フォルダ名'/'ファイル名.c':85:28: warning: illegal character encoding in string literal [-Winvalid-source-encoding] printf("error : Fclose() 8E<B8><94>s<82>ナ<B7><81>D%d\n",rtc ); ^~~~~~~~~~~~ ~~~~ ~~~~~~~~ /'フォルダ名'/'ファイル名.c':126:21: warning: illegal character encoding in string literal [-Winvalid-source-encoding] printf("error : %s<83>t<83>@<83>C<83><8B><82><AA><82><A0><82><E8><82>ワ<B9><82><F1><81>D\n",filename ); ^~~~ ~~~~ ~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~ /'フォルダ名'/'ファイル名.c':236:21: warning: illegal character encoding in string literal [-Winvalid-source-encoding] printf("error : %s<83>t<83>@<83>C<83><8B><82><AA><83>I<81>[<83>v<83><93><82>ナ<AB><82>ワ<B9><82><F1><81>D\n",filename ); ^~~~ ~~~~ ~~~~ ~~~~~~~~~~~~~~~~~~~~ ~~~~ ~~~~ ~~~~~~~~~~~~ ~~~~~~~~ ~~~~~~~~~~~~~~~~ 5 warnings generated.
と表示されました。この場合どのような操作をすればうまく実行できるのでしょうか。 ご回答よろしくお願いいたします。
michio
michio on 12 Jun 2018
ログに Xcode とありますが、、Windows OS 用の拡張子 (mexw32) でしたので、Windowsのお話と思い込んでいましたが、今回使用されているのは Mac OS でしょうか? mexw32 の拡張子のMEX関数はMac OS 上では使用できません。
またメッセージからソースコードのエンコーディングに問題がありそうですね。

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!