【问题标题】:Linking mixed FORTRAN and C++ in the Visual studio 2008 environment在 Visual Studio 2008 环境中链接混合的 FORTRAN 和 C++
【发布时间】:2011-09-02 09:52:44
【问题描述】:

我正在使用 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,在同一台计算机上使用 intell visual fortran compiler Professional edition 11.1 in Visual Studio 2008 和 C++ in Visual Studio 2010。

【问题讨论】:

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


    【解决方案1】:

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

    请注意所有这些都与 VC++ 6.0 有关。

    【讨论】:

    • 非常感谢您的回复,实际上我的问题与编程无关,这是提供的链接中的主要问题。而是关于在 Visual Studio 中设置或包含一些 C++ 库。
    • VC++ 6,该死的太古老了。而且我什至不会称其为 c++ 编译器
    【解决方案2】:

    转到项目属性 -> 链接器 -> 输入 -> 附加依赖项,然后在此处输入库名称。

    【讨论】:

    • 非常感谢您的回复............我应该在附加依赖项中输入哪些库名称;我的 C++ 目标文件名已经存在。正如我已经提到的,我的 FORTRAN 在 VS2008 中工作,而 C++ 在 VS2010 中工作,所以我该如何满足这一点(我的意思是我应该将 shome 库文件复制到我的项目文件夹或提供一些路径等???????)
    • 恐怕我对 Visual C++ 或 VS2010 没有太多经验。您的系统路径中可能有一个 C++ 运行时库,因此您不需要将任何内容复制到项目文件夹中,只需在 Additional Dependencies 中添加适当的 stdc++ 库名称即可。
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2010-12-09
      • 1970-01-01
      • 2013-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多