MATLAB gives error while generating MEX file from the Fortran source code

When I try to generate the MEX file from the Fortran source code (TEINITG.F), Matlab always gives errors.After downloading the trial versions of Intel Visual Fortran 11.1 Microsoft Visual C++ 2008 SP1 linker, I used mex -setup to configure the environment. Then I tried to generate mex functions from FORTRAN Source Code (TEINITG.F).
However, when I type: mex TEINITG.F
Matlab shows link errors, like: >>mex TEINITG.F Creating library C:\Users\xue\AppData\Local\Temp\mex_TDkmp3\templib.x and object C:\Users\xue\AppData\Local\Temp\mex_TDkmp3\templib.exp TEINITG.obj : error LNK2019: unresolved external symbol _TEINIT referenced in function _MEXFUNCTION TEINITG.mexw32 : fatal error LNK1120: 1 unresolved externals
C:\PROGRA~2\MATLAB\R2010B~1\BIN\MEX.PL: Error: Link of 'TEINITG.mexw32' failed.
I am running MATLAB R2010b-32bit on windows-64 bit. Might that be the source of problem? I do not know how to deal with this error. Do you have any suggestions that may fix this problem?

2 件のコメント

Walter Roberson
Walter Roberson 2012 年 12 月 26 日
You have a source file TEINITG.F . Inside that, is the routine named TEINIT with no G ? If so that could be a problem.
Jenny
Jenny 2012 年 12 月 26 日
編集済み: Jenny 2012 年 12 月 26 日
It was named as TEINIT with no G but after you command I changed it to be TEINITG. However, I am still getting the similar error message. "unresolved external symbol _TEINITG referenced in function _MEXFUNCTION "
Thank you for your suggestion.

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

 採用された回答

James Tursa
James Tursa 2012 年 12 月 31 日
編集済み: James Tursa 2012 年 12 月 31 日

0 投票

You are missing the source code for the TEINIT routine, so there is no object routine TEINIT to link to at link time. I.e., somewhere in your TEINITG.F file you call TEINIT (subroutine or function) but there is no source code for this routine in your TEINITG.F file. Is this in a separate file instead? If so, it must be included on the mex command line, e.g. mex TEINITG.F TEINIT.F all on the same line. Or, if there is an object file or library file that contains this routine, include the name of that object or library file on the mex command line. For a more detailed reply you would need to post your source code.

1 件のコメント

Jenny
Jenny 2013 年 1 月 1 日
Problem is solved when we type mex TEINITG.F TEINIT.F all on the same line, instead of TEINITG.F. Thank you.

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

その他の回答 (1 件)

Jan
Jan 2012 年 12 月 26 日

0 投票

Is TEINITG the name of a defined function? The compiler claimes, that it is not: "unresolved external symbol _TEINITG" means, that there is no such function.
You cannot use the name of the source file to call your function from the inside, because this works from Matlab only. From inside the MEXFUNCTION a recursive call has to call MEXFUNCTION.

カテゴリ

ヘルプ センター および File ExchangeFortran with MATLAB についてさらに検索

質問済み:

2012 年 12 月 26 日

Community Treasure Hunt

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

Start Hunting!

Translated by