在visual studio下混合使用fortran和c ++ / c编程

时间:2010-11-10 05:56:28

标签: c++ fortran mixing

很多人可能会问这个问题,但是,我从来没有见过任何一个人给出了满意的解决方案。 好吧,让我明白我的问题:我试图从我现有的fortran代码中调用一些c ++子例程/函数。重点是我在visual studio 2008中做的每一件事(Fortran编译器都是intel fortran 11.0)。任何人都可以给我一步一步的指导,在同一个项目中编译这两种语言?如果不能在一个项目中做到这一点,我该怎么办? plz显示了一个示例代码,可能只有几行只是为了说明如何继续。

提前致谢。

任何想要谈论此事的人都是受欢迎的。但非常清楚我正在寻找使用visual studio和intel fortran的解决方案(使用GUI编译和调试)。没有BULLSHIT关于在linux中使用gcc / gfortran进行编译。我已经读过很多这样的回应。

由于

3 个答案:

答案 0 :(得分:3)

您将无法从Fortran调用C ++。 Fortran不遵循C ++类的概念,没有模板的概念,没有异常的概念,也不能正确维护C ++对象的生命周期。

您可以从C ++代码中公开C接口,Fortran可以调用该接口。您可以将此类代码编译为.dll,然后您可以像在任何其他dll中一样加载和调用dll中的函数。但是,您必须查阅有关如何在DLL中调用函数的Fortran文档。

答案 1 :(得分:3)

如果您只想要C ++的C功能,一般的方法是在C ++代码中使用extern C.然后,您可以在Fortran端使用ISO C绑定,Fortran语言标准要求Fortran和C可以互操作。在Fortran中,您声明了一个描述C例程的接口。 gfortran手册中有Fortran / C代码示例...适用于所有编译器,因为它是语言的一部分。英特尔(R)Fortran / C混合语言编程下的英特尔手册中有一些Fortran / C示例。在印刷版中,请参阅Metcalf,Reid和Cohen撰写的Fortran 95一书。对于英特尔编译器特有的方面,英特尔论坛上有许多问题和答案。

答案 2 :(得分:0)

Fortran编译器无关紧要,因为它们都是COFF对象格式。如果我正确理解你的问题,你试图从fortran调用c / c ++,但你的主要gui是VS 2008.由于你的主要gui是vs 2008,我进一步假设你的主体源代码是c / c ++并且你想调用一个调用ac / c ++例程的fortran例程。鉴于此,您需要首先使用VS 2008将您的c / c ++函数编译为目标文件。然后使用Intel Fortran编译器将您的fortran例程编译为引用这些c / c ++函数(使用c / c ++目标文件)的目标文件。现在应该为您提供一个结合了fortran和c / c ++函数的新对象文件。现在,您可以将此对象文件与Visual Studio主体源代码一起使用。要记住的最重要的事情是,无论何时编译为目标代码,请确保以静态方式链接运行时库。编译器切换和调用外部语言例程的语法,你必须自己找到,因为互联网上有TON的材料。这是一个很好的参考http://docs.cray.com/books/S-2179-52/html-S-2179-52/ppgzmrwh.html