X-Spam-Check-By: sourceware.org Message-ID: <44A589D0.5030203@rose-hulman.edu> Date: Fri, 30 Jun 2006 15:30:08 -0500 From: Hannes Gruschinski User-Agent: Thunderbird 1.5.0.4 (Windows/20060516) MIME-Version: 1.0 To: cygwin AT cygwin DOT com Subject: MEX interface + DAE solvers in Fortran + gnumex/cygwin/mingw Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Hi, I try to make a DAE solver work for my problems using the mex interface between Fortran and MATLAB. That is, I installed gnumex, Cygwin, and Mingw according to http://gnumex.sourceforge.net/ and built the mex interface between fortran and MATLAB 6.5.1. It turns out that it successfully compiles the test files yprimef.f and yprimefg.f and runs it. >> mex -f mexopts.bat -v -O -output yprime yprimef.f yprimefg.f This is mex, Copyright 1984-2002 The MathWorks, Inc. ... >> yprimef(1, 1:4) ans = 2.0000 8.9685 4.0000 -1.0947 I then have been trying to compile mex interfaces for RADAU, one of the ODE/DAE solvers, from http://www-m3.ma.tum.de/twiki/bin/view/Software/ODEWebHome#ODE_MEXfiles_Homepage and its solvers from http://www.unige.ch/~hairer/software.html Similarly, I have problems compiling DASSL and a test set (Test Set for IVP Solvers) from http://pitagora.dm.uniba.it/~testset//instruc.htm as can be seen below. I guess it is a problem related to my mex interface configuration. If you have an idea please let me know. Thank you! Hannes Appendix 0: my mexopts.bat file @echo off rem C:\Documents and Settings\student\Application Data\MathWorks\MATLAB\R13\mexopts.bat rem Generated by gnumex.m script in c:\gnumex rem gnumex version: 1.11 rem Compile and link options used for building MEX etc files with rem the Mingw/Cygwin tools. Options here are: rem Mingw linking rem Mex (*.dll) creation rem Safe linking to temporary libraries rem Language: Fortran rem Compiling for pentium and above rem Matlab version 6.5 rem set MATLAB=C:\MATLAB~1 set GM_PERLPATH=C:\MATLAB~1\sys\perl\win32\bin\perl.exe set GM_UTIL_PATH=c:\gnumex set PATH=c:\mingw\bin;%PATH% rem rem Added libraries for linking set GM_ADD_LIBS=-lg2c rem rem Type of file to compile (mex or engine) set GM_MEXTYPE=mex rem rem Language for compilation set GM_MEXLANG=f rem rem def files to be converted to libs set GM_DEFS2LINK=libmx.def;libmex.def;libmat.def;_libmatlbmx.def; rem rem dlltool command line set GM_DLLTOOL=c:\gnumex\mexdlltool -E --as c:\mingw\bin\as.exe rem rem compiler options; add compiler flags to compflags as desired set NAME_OBJECT=-o set COMPILER=gcc set COMPFLAGS=-c -DMATLAB_MEX_FILE -mrtd -fcase-upper -fno-underscoring -fleading-underscore set OPTIMFLAGS=-O3 -malign-double -fno-exceptions -mcpu=pentium set DEBUGFLAGS=-g rem rem NB Library creation commands occur in linker scripts rem rem Linker parameters set LINKER=%GM_PERLPATH% %GM_UTIL_PATH%\linkmex.pl set LINKFLAGS= set LINKOPTIMFLAGS=-s set LINKDEBUGFLAGS=-g -Wl,--image-base,0x28000000\n set LINK_FILE= set LINK_LIB= set NAME_OUTPUT=-o %OUTDIR%%MEX_NAME%.dll rem rem Resource compiler parameters set RC_COMPILER=%GM_PERLPATH% %GM_UTIL_PATH%\rccompile.pl -o %OUTDIR%mexversion.res set RC_LINKER= Appendix 1:compilation trial with RADAU and driver >> mex -v -DFORTRANUPP -DFORTRANNOUNDER -f C:\mex\mexopts\mexopts.bat -O -output VDPOL radau.f dr_radau.f This is mex, Copyright 1984-2002 The MathWorks, Inc. -> Options file specified on command line ---------------------------------------------------------------- -> Options file = C:\ThesisWork_HG\mex\mexopts\mexopts.bat MATLAB = C:\MATLAB~1 -> COMPILER = gcc -> Compiler flags: COMPFLAGS = -c -DMATLAB_MEX_FILE -mrtd -fcase-upper -fno-underscoring -fleading-underscore OPTIMFLAGS = -O3 -malign-double -fno-exceptions -mcpu=pentium DEBUGFLAGS = -g arguments = -DFORTRANUPP -DFORTRANNOUNDER Name switch = -o -> Pre-linking commands = -> LINKER = C:\MATLAB~1\sys\perl\win32\bin\perl.exe c:\gnumex\linkmex.pl -> Link directives: LINKFLAGS = LINKFLAGSPOST = Name directive = -o VDPOL.dll File link directive = Lib. link directive = Rsp file indicator = -> Resource Compiler = C:\MATLAB~1\sys\perl\win32\bin\perl.exe c:\gnumex\rccompile.pl -o mexversion.res -> Resource Linker = ---------------------------------------------------------------- --> "gcc -DFORTRANUPP -DFORTRANNOUNDER -c -DMATLAB_MEX_FILE -mrtd -fcase-upper -fno-underscoring -fleading-underscore -oradau.obj -O3 -malign-double -fno-exceptions -mcpu=pentium radau.f" --> "gcc -DFORTRANUPP -DFORTRANNOUNDER -c -DMATLAB_MEX_FILE -mrtd -fcase-upper -fno-underscoring -fleading-underscore -odr_radau.obj -O3 -malign-double -fno-exceptions -mcpu=pentium dr_radau.f" --> "C:\MATLAB~1\sys\perl\win32\bin\perl.exe c:\gnumex\linkmex.pl -o VDPOL.dll -s radau.obj dr_radau.obj " Cannot export MEXFUNCTION: symbol not defined radau.obj(.text+0x1fba):radau.f: undefined reference to `DECOMR' radau.obj(.text+0x20c6):radau.f: undefined reference to `DECOMC' radau.obj(.text+0x242f):radau.f: undefined reference to `SLVRAR' radau.obj(.text+0x26aa):radau.f: undefined reference to `ESTRAV' radau.obj(.text+0x3693):radau.f: undefined reference to `SLVRAR' radau.obj(.text+0x37d0):radau.f: undefined reference to `SLVRAI' radau.obj(.text+0x3ed9):radau.f: undefined reference to `ESTRAV' radau.obj(.text+0x4c47):radau.f: undefined reference to `SLVRAR' radau.obj(.text+0x4d84):radau.f: undefined reference to `SLVRAI' radau.obj(.text+0x52c4):radau.f: undefined reference to `ESTRAV' radau.obj(.text+0x5e03):radau.f: undefined reference to `SLVRAD' radau.obj(.text+0x6191):radau.f: undefined reference to `ESTRAD' C:\MATLAB6P5\BIN\WIN32\MEX.PL: Error: Link of 'VDPOL.dll' failed. ??? Error using ==> mex Unable to complete successfully >> Appendix 2:compilation trial with DASSL and test set >> mex -f C:\mex\mexopts\mexopts.bat -v -O -output VDPOL dassld.f vdpol.f dassla.f ddassl.f report.f This is mex, Copyright 1984-2002 The MathWorks, Inc. -> Options file specified on command line ---------------------------------------------------------------- -> Options file = C:\ThesisWork_HG\mex\mexopts\mexopts.bat MATLAB = C:\MATLAB~1 -> COMPILER = gcc -> Compiler flags: COMPFLAGS = -c -DMATLAB_MEX_FILE -mrtd -fcase-upper -fno-underscoring -fleading-underscore OPTIMFLAGS = -O3 -malign-double -fno-exceptions -mcpu=pentium DEBUGFLAGS = -g arguments = Name switch = -o -> Pre-linking commands = -> LINKER = C:\MATLAB~1\sys\perl\win32\bin\perl.exe c:\gnumex\linkmex.pl -> Link directives: LINKFLAGS = LINKFLAGSPOST = Name directive = -o VDPOL.dll File link directive = Lib. link directive = Rsp file indicator = -> Resource Compiler = C:\MATLAB~1\sys\perl\win32\bin\perl.exe c:\gnumex\rccompile.pl -o mexversion.res -> Resource Linker = ---------------------------------------------------------------- --> "gcc -c -DMATLAB_MEX_FILE -mrtd -fcase-upper -fno-underscoring -fleading-underscore -odassld.obj -O3 -malign-double -fno-exceptions -mcpu=pentium dassld.f" --> "gcc -c -DMATLAB_MEX_FILE -mrtd -fcase-upper -fno-underscoring -fleading-underscore -ovdpol.obj -O3 -malign-double -fno-exceptions -mcpu=pentium vdpol.f" --> "gcc -c -DMATLAB_MEX_FILE -mrtd -fcase-upper -fno-underscoring -fleading-underscore -odassla.obj -O3 -malign-double -fno-exceptions -mcpu=pentium dassla.f" --> "gcc -c -DMATLAB_MEX_FILE -mrtd -fcase-upper -fno-underscoring -fleading-underscore -oddassl.obj -O3 -malign-double -fno-exceptions -mcpu=pentium ddassl.f" --> "gcc -c -DMATLAB_MEX_FILE -mrtd -fcase-upper -fno-underscoring -fleading-underscore -oreport.obj -O3 -malign-double -fno-exceptions -mcpu=pentium report.f" report.f: In subroutine `GETINP': report.f:94: warning: + driver(:lnblnk(driver)),'.f' 1 report.f:201: (continued): + fullnm(:lnblnk(fullnm)), 2 Same name `LNBLNK' used for global at (2) and intrinsic at (1) [info -f g77 M INTGLOB] report.f: Outside of any program unit: report.f:201: warning: + fullnm(:lnblnk(fullnm)), 1 report.f:660: (continued): integer function lnblnk(string) 2 Same name `LNBLNK' used for global at (2) and intrinsic at (1) [info -f g77 M INTGLOB] --> "C:\MATLAB~1\sys\perl\win32\bin\perl.exe c:\gnumex\linkmex.pl -o VDPOL.dll -s dassld.obj vdpol.obj dassla.obj ddassl.obj report.obj " Cannot export MEXFUNCTION: symbol not defined C:\MATLAB6P5\BIN\WIN32\MEX.PL: Error: Link of 'VDPOL.dll' failed. ??? Error using ==> mex Unable to complete successfully -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/