我使用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 ++。
答案 0 :(得分:0)
此MSDN文章可以帮助您: Mixed-Language Issues 和 Mixed-Language Programming with C++
只关注所有这些与VC ++ 6.0有关。
答案 1 :(得分:0)
转到项目属性 - >链接器 - >输入 - >其他依赖项,并在那里输入库名称。
答案 2 :(得分:0)
确保使用gfortran运行时库静态构建 试试gfortran -static-libgfortran(-c或-S)-f2003 yourfortransource.f90。你应该得到一个扩展名为.o的对象文件。
然后将目标文件传递给MS编译器。仅将C / C ++源代码编译为目标文件。最后使用两个目标文件一起进行正常构建。使用命令行编译器执行此操作以确保其有效。