MathGroup Archive 2001

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Re: No joy using gcc 2.95.3 + MathLink v3r9 + Windows 2000 SP2

  • To: mathgroup at smc.vnet.net
  • Subject: [mg31852] Re: [mg31621] Re: [mg31600] No joy using gcc 2.95.3 + MathLink v3r9 + Windows 2000 SP2
  • From: "Matthew D. Langston" <langston at SLAC.Stanford.EDU>
  • Date: Fri, 7 Dec 2001 05:56:46 -0500 (EST)
  • Organization: Stanford Linear Accelerator Center
  • References: <200111161138.GAA07033@smc.vnet.net> <200111181129.GAA27822@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Hi John,

Thanks for your help.  Unfortunately, we just haven't been able to find a
way to use gcc and/or g77 to create working MathLink programs under Windows.

I tested your theory that perhaps argc and argv were not being passed to
MLMain(), but it looks like they are (unless MLScanString works differently
when called from a gcc compiled program instead of a cl compiled program).

I used the following WinMain program using both gcc and cl, and only the cl
compiled program creates a working MathLink  program.  Both, however,
display the "Hello from WinMain" MessageBox when I Install[] my MathLink
program, so it appears to be some incompatability between gcc and MathLink.

#include "mathlink.h"


int APIENTRY WinMain(HINSTANCE hInstance,
                                        HINSTANCE hPrevInstance,
                                        LPSTR     lpCmdLine,
                                        int       nCmdShow)
{
                MessageBox(NULL, "Hello from WinMain!", NULL, MB_OK);
                char  buff[512];
                char FAR * buff_start = buff;
                char FAR * argv[32];
                char FAR * FAR * argv_end = argv + 32;

                if( !MLInitializeIcon( hInstance, nCmdShow ) )
                {
                        return 1;
                }

                MLScanString( argv, &argv_end, &lpCmdLine, &buff_start);
                return MLMain( argv_end - argv, argv);
}

Anyway, I wanted to thank you for your help, and to inform other MathLink
users not to use gcc and/or g77 under Windows to create MathLink programs.

Warmest regards, Matt

--
Matthew D. Langston
SLD, Stanford Linear Accelerator Center
langston at SLAC.Stanford.EDU


----- Original Message -----
From: "John Fultz" <jfultz at wolfram.com>
To: mathgroup at smc.vnet.net
Subject: [mg31852] [mg31621] Re: [mg31600] No joy using gcc 2.95.3 + MathLink v3r9 +
Windows 2000 SP2


> On Fri, 16 Nov 2001 06:38:04 -0500 (EST), Matthew D. Langston wrote:
> >I'm trying to recompile, using gcc 2.95.3, a library of functions
> >written in C/C++ that I have already successfully exported to
> >Mathematica (using MathLink) with cl.exe version 6 (from Microsoft
> >Visual Studio 6.0) and cl.exe version 7 (from Microsoft Visual
> >Studio.NET).
> >
> >I'm running Windows 2000 SP2, Mathematica 4.1, and using mldev32 from
> >the MathLink Developer's Kit v3r9.  The version of gcc I am using is
> >2.95.3-5 from the Cygwin 1.3.5 release (which is the latest version as I
> >write this).
> >
> >I'm linking against the ml32i2m.lib import library (the version for
> >Microsoft Visual Studio 6.0).
> >
> >I'm passing "-mwindows" to gcc at both compile time and link time, and
> >passing "-e _mainCRTStartup" to gcc at link time.  This *should* give me
> >an official, respectable Win32 application.  And indeed, these options
> >do work in creating working Win32 applications.
> >
> >My library of C/C++ functions compiles and links fine with all three
> >compilers (i.e. gcc 2.95.3, cl.exe version 6, and cl.exe version 7).  My
> >functions work just fine (after Install[]ing them in Mathematica ) using
> >the two Microsoft compilers, but the gcc version "appears" to hang
> >Mathematica.
> >
> >When I run Install["Minuitgcc`"] (to load the gcc version of my MathLink
> >exported functions) from within the Mathematica Front End, I get a
> >dialog box with the title "MathLink" that has a "Create link:" label, a
> >text entry box and an "OK" and "Cancel" button.
> >
> >If I click the "OK" button (without entering anything in the text box)
> >then I get another dialog box with the title "MathLink" that has a "Link
> >created on: 628" label and an "OK" button.
> >
> >My MathLink program appears in the Windows Task Manager as task
> >"Minuitgcc(628)" with a status of "Running".  However, Mathematica just
> >hangs on the cell that executed the Install["Minuitgcc`"] command.  The
> >title of the Front End Mathematica window is "Running...m2c.nb" (my
> >notebooks name is m2c.nb).
> >
> >The exact same code is being used by all three compilers (i.e. my source
> >code of functions, the same mathlink.h file, the same output file from
> >mprep, the same ml32i2m.lib import library, etc.).  The only difference
> >is the compiler/linker.
> >
> >Why do the two Microsoft compilers create working MathLink programs,
> >while gcc doesn't?
> >
> >Thank you for your help.
> >
> >Regards, Matt
> >
> >--
> >Matthew D. Langston
> >SLD, Stanford Linear Accelerator Center
> >langston at SLAC.Stanford.EDU
> >
> >
>
> It sounds to me like the gcc version of your program isn't passing the
> command-line arguments to MLMain() correctly.  If I had to guess, I'd say
> that gcc is using the main() startup function instead of WinMain(), and
> you didn't write your main() function to correctly pass argc and argv into
> MLMain().
>
> Sincerely,
>
> John Fultz
> jfultz at wolfram.com
> User Interface Group
> Wolfram Research, Inc.
>
>
>



  • Prev by Date: Re: scope all wrong? in Mathematica 4.1
  • Next by Date: Re: scope all wrong? in Mathematica 4.1
  • Previous by thread: Re: Surface graphics (Plot4D) coloring question
  • Next by thread: Solve InterpolatingFunction problem