在Visual Studio 2008环境中链接混合FORTRAN和C ++

时间:2011-09-02 09:52:44

标签: c++ visual-studio linker fortran windows-vista

我使用ISO_C_Binding模块从FORTAN调用C ++函数。我可以使用命令序列使用MINGW g ++和gfortran命令行选项编译和链接Fortran和C ++文件

gfortran -c main.f90

g++ -c print_hi.cpp

用于编译和链接我可以使用gfortran选项并将C ++标准库包含为

gfortran main.o print_hi.o -o main -lstdc++

哪个工作绝对正常。 现在我的问题是如何在visual studio环境中做同样的事情。在简单C的情况下,我们将在链接器中的附加依赖项中包含print_hi.o文件,但如果我只包含此C ++文件(print_hi.o),则会出现类似

的错误
 Error LNK2010: unresolved external symbol _ZSt4cout referenced in function _print_hi

所以我想我需要在我的FORTRAN项目中给出C ++库的路径,就像我们在MINGW命令行中那样,但我不知道如何做到这一点。

PS:我正在使用Windows Vista,在Visual Studio 2008中使用intell visual fortran编译器专业版11.1,在同一台计算机上使用Visual Studio 2010中的C ++。

3 个答案:

答案 0 :(得分:0)

此MSDN文章可以帮助您: Mixed-Language IssuesMixed-Language Programming with C++

只关注所有这些与VC ++ 6.0有关。

答案 1 :(得分:0)

转到项目属性 - >链接器 - >输入 - >其他依赖项,并在那里输入库名称。

答案 2 :(得分:0)

确保使用gfortran运行时库静态构建 试试gfortran -static-libgfortran(-c或-S)-f2003 yourfortransource.f90。你应该得到一个扩展名为.o的对象文件。

然后将目标文件传递给MS编译器。仅将C / C ++源代码编译为目标文件。最后使用两个目标文件一起进行正常构建。使用命令行编译器执行此操作以确保其有效。