连接混合的 FORTRAN 和 C++在Visual Studio 2008环境中
我正在使用 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++
它工作得非常好。 现在我的问题是如何在视觉工作室环境中做同样的事情。对于简单的 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++。
I am calling a C++ function from FORTAN using ISO_C_Binding module. I can compile and link the Fortran and C++ files using MINGW g++ and gfortran command line option using the command sequence
gfortran -c main.f90
g++ -c print_hi.cpp
for compiling and for linking I can use the gfortran option and including the C++ standard libraries as
gfortran main.o print_hi.o -o main -lstdc++
which work absolutely fine.
Now my questions is how can I do the same in the visual studio environment. In case of simple C we will just include the print_hi.o file in the additional dependencies in the linker but if I only include this C++ file (print_hi.o), it gives errors like
Error LNK2010: unresolved external symbol _ZSt4cout referenced in function _print_hi
So I guess I need to give the path to the C++ libraries in my FORTRAN project as we are doing in the command line MINGW case but I don’t know how to do this.
PS: I am using windows Vista, with intell visual fortran compiler professional edition 11.1 in Visual studio 2008 and C++ in Visual studio 2010 in the same computer.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这篇 MSDN 文章可以帮助您:
混合语言问题
和
使用 C++ 的混合语言编程
仅限 请注意,这一切都涉及 VC++ 6.0。
This MSDN articles can help you:
Mixed-Language Issues
and
Mixed-Language Programming with C++
Only pay attention that all this concerns VC++ 6.0.
转到项目属性 ->链接器->输入->其他依赖项,然后在其中输入库名称。
Go to Project Properties -> Linker -> Input -> Additional Dependencies, and enter the library names there.
确保使用 gfortran 运行时库静态构建
尝试 gfortran -static-libgfortran (-c 或 -S) -f2003 yourfortransource.f90 。您应该获得一个扩展名为 .o 的目标文件。
然后将目标文件传递给 MS 编译器。仅将 C/C++ 源代码编译为目标文件。最后将两个目标文件一起进行正常构建。使用命令行编译器执行此操作以确保其正常工作。
Make sure you statically build with the gfortran run-time library
Try gfortran -static-libgfortran (-c or -S) -f2003 yourfortransource.f90 . You should get an object file with an .o extension.
Then bring the object file over to your MS compiler. Compile your C/C++ source code to an object file only. Last do a normal build with the two object files together. Do this with the command line compiler to make sure it works.