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

6 ビュー (過去 30 日間)
NAOKI FUKUDA
NAOKI FUKUDA 2018 年 6 月 12 日
コメント済み: michio 2018 年 6 月 12 日
他の古いバージョンのmatlabで作成されたmexファイルを受け取りmatlab2018でコンパイルしようとしたのですがうまくいきませんでした。 バージョンが違うとコンパイルはできないのでしょうか? 拡張子はmexw32です。よろしくお願いいたします。

回答 (1 件)

michio
michio 2018 年 6 月 12 日
編集済み: michio 2018 年 6 月 12 日
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 件のコメント
NAOKI FUKUDA
NAOKI FUKUDA 2018 年 6 月 12 日
ご回答ありがとうございます。 早速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 2018 年 6 月 12 日
ログに Xcode とありますが、、Windows OS 用の拡張子 (mexw32) でしたので、Windowsのお話と思い込んでいましたが、今回使用されているのは Mac OS でしょうか? mexw32 の拡張子のMEX関数はMac OS 上では使用できません。
またメッセージからソースコードのエンコーディングに問題がありそうですね。

サインインしてコメントする。

Community Treasure Hunt

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

Start Hunting!