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

发布于 2024-12-02 21:41:49 字数 727 浏览 1 评论 0原文

我正在使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

南风起 2024-12-09 21:41:49

这篇 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.

预谋 2024-12-09 21:41:49

转到项目属性 ->链接器->输入->其他依赖项,然后在其中输入库名称。

Go to Project Properties -> Linker -> Input -> Additional Dependencies, and enter the library names there.

遥远的绿洲 2024-12-09 21:41:49

确保使用 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文