MATLAB2015aでMinGWのgfortranを使いたいのですがうまくいきません. CとC++は正常にビルドできるのですが, FORTRANについてはエラーが出ます.どうすればいいでしょうか?
6 views (last 30 days)
Show older comments
MATLAB2015aでMinGWのgfortranを使いたいのですがうまくいきません. CとC++は正常にビルドできるのですが, FORTRANについてはエラーが出ます.
MinGWのビルドに関する設定を施しているオプションファイルは添付してあります.
ビルドするファイルは
で示されている「timestwo.F」です. 以下の手順でビルドしました.
(FORTRANのコンパイラの設定, testuserはユーザ名)
>> mex -setup:C:\Users\testuser\AppData\Roaming\MathWorks\MATLAB\R2015a\mex_FORTRAN_mingw-w64.xml FORTRAN
(mexファイルのビルド)
>> mex timestwo.F -largeArrayDims -v
エラー内容は以下のとおりです.
エラー: mex
C:\Users\testuser\AppData\Local\Temp\mex_370349256447315_4688\timestwo.obj:timestwo.F:(.text+0x41): undefined reference to `mexerrmsgidandtxt_'
C:\Users\testuser\AppData\Local\Temp\mex_370349256447315_4688\timestwo.obj:timestwo.F:(.text+0x49): undefined reference to `mxisnumeric_'
C:\Users\testuser\AppData\Local\Temp\mex_370349256447315_4688\timestwo.obj:timestwo.F:(.text+0x6c): undefined reference to `mexerrmsgidandtxt_'
C:\Users\testuser\AppData\Local\Temp\mex_370349256447315_4688\timestwo.obj:timestwo.F:(.text+0x74): undefined reference to `mxgetm730_'
C:\Users\testuser\AppData\Local\Temp\mex_370349256447315_4688\timestwo.obj:timestwo.F:(.text+0x80): undefined reference to `mxgetn730_'
C:\Users\testuser\AppData\Local\Temp\mex_370349256447315_4688\timestwo.obj:timestwo.F:(.text+0x9a): undefined reference to `mxgetpr_'
C:\Users\testuser\AppData\Local\Temp\mex_370349256447315_4688\timestwo.obj:timestwo.F:(.text+0xb0): undefined reference to `mxcopyptrtoreal8730_'
C:\Users\testuser\AppData\Local\Temp\mex_370349256447315_4688\timestwo.obj:timestwo.F:(.text+0xc6): undefined reference to `mxcreatedoublematrix730_'
C:\Users\testuser\AppData\Local\Temp\mex_370349256447315_4688\timestwo.obj:timestwo.F:(.text+0xd0): undefined reference to `mxgetpr_'
C:\Users\testuser\AppData\Local\Temp\mex_370349256447315_4688\timestwo.obj:timestwo.F:(.text+0xf6): undefined reference to `mxcopyreal8toptr730_'
C:\Users\testuser\AppData\Local\Temp\mex_370349256447315_4688\timestwo.obj:timestwo.F:(.text+0x126): undefined reference to `mexerrmsgidandtxt_'
collect2.exe: error: ld returned 1 exit status
冒頭でも書きましたが, FORTRANのみうまくビルドされません. 関数を見つけられないエラーだということはもちろんわかっています. しかしながら, これらの関数が含まれているライブラリはリンクオプションで設定しています. また, アンダースコアの問題と考え, コンパイラのオプションに -fno-underscoring を付け足しましたが, 同じようなエラーが出ます.
できるかぎりネットで調べましたが, どうしても答えを見つけられそうにありません... よろしければ, この問題についてヒントだけでも教えてもらえないでしょうか.
0 Comments
Answers (1)
Norihiro Kobayashi
on 4 Jan 2017
Edited: Norihiro Kobayashi
on 4 Jan 2017
しばらく経過してしまったようですが、以下のチェックをもしよろしければご検討下さい。
すでにアンダースコアのオプションも検討されていたようですが、no underscoreのオプションがどのように働いているのかが若干気になります。
(通常FortranではCとことなり、アンダースコアが二つつくということはドキュメントのどこかで確認したことがありますが。直接的な原因かどうかは私も理解しておりません)
VisualStudioをお持ちでしたら、コンパイル後のオブジェクトファイルに対してdumpbinを使って解析を試みることも有効かも知れません。
以上ご参考になれば幸いです。
0 Comments
See Also
Categories
Find more on MATLAB Support for MinGW-w64 C/C++ Compiler in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!