views:

419

answers:

1

I'm trying to link in some legacy Fortran code with a Visual Studio C++ project. I tried using the Windows build of gfortran to build my static library but Visual Studio complains about unresolved external symbols. I guessing this is because mixing mingw and visual studio compilers is a horrible, horrible idea.

I've googled a bit and I see my options are Intel's and Lahey's compilers but both carry a hefty price tag.

Does anyone know of other options, or a different approach I can take?

EDIT IN RESPONSE TO COMMENTS

The error I'm getting is:

Error 7 error LNK2019: unresolved external symbol ___chkstk referenced in function fmm

Googling around led me to this, which just seems like a bad idea.

+2  A: 

You could go the old-school route and use f2c to translate your legacy Fortran to standard K&R C which you should be able to build with the MSFT toolchain.

I have not used f2c in many moons and recall it being a tad picky and a pain to work with. As g77 and later gfortan became so much better, there was less and less need to use it.

That said, for your legacy needs it sounds like a good fit. The Wikipedia entry on f2c also contains a link to the f2c sources at Netlib.

Edit: This may not free you from the run-time requirements though -- your C++ app may need to be linked to the f2c runtime.

Dirk Eddelbuettel
@Dirk, excellent idea. The actually worked without any additional linking, all I needed was the f2c.h. If you don't mind, I'm not going to accept your answer yet, I want to see if any more answers get posted. Thanks!
Mark
Interesting. As I said, I used it many many moons ago and mostly on Linux where linking with -lf2c was de rigeur. Maybe the frontend got better, more complete or you just got lucky with the MSFT libs.
Dirk Eddelbuettel