Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
混合Fortran/C++;使用英特尔编译器:对';系统'; 我在FORTRAN 1990和C++ 11中使用了一个大型混合语言代码。我最近在一个新平台上编译了英特尔编译器(我以前成功使用过),特别是英特尔版本19.1.1.217_C++_Fortran - Fatal编程技术网

混合Fortran/C++;使用英特尔编译器:对';系统'; 我在FORTRAN 1990和C++ 11中使用了一个大型混合语言代码。我最近在一个新平台上编译了英特尔编译器(我以前成功使用过),特别是英特尔版本19.1.1.217

混合Fortran/C++;使用英特尔编译器:对';系统'; 我在FORTRAN 1990和C++ 11中使用了一个大型混合语言代码。我最近在一个新平台上编译了英特尔编译器(我以前成功使用过),特别是英特尔版本19.1.1.217,c++,fortran,C++,Fortran,我将问题归结为一个简单的测试: f.F90 subroutine ff() implicit none call system('echo y') end subroutine ff main.cc #include <iostream> extern "C" { void ff_(void); } int main(void) { ff_(); return 0; } …之后,我得到以下信息: f.o: In function `ff

我将问题归结为一个简单的测试:

f.F90

subroutine ff()

  implicit none
  call system('echo y')

end subroutine ff
main.cc

#include <iostream>
extern "C"
{
  void ff_(void);
}
int main(void)
{
  ff_();
  return 0;
}
…之后,我得到以下信息:

f.o: In function `ff_':
f.F90:(.text+0xd): undefined reference to `system_'
我知道对
system()
的调用不是标准的一部分,但我可以毫无问题地成功编译和运行以下内容:

p.F90

program ff

  implicit none
  call system('echo y')

end program
mpif90-f90=ifort p.f90-o pexe&&./pexe

y

这说明使用<代码> MPIF90-F90= iFux是不方便地告诉链接器在一些额外的库中链接,但是在结果的可执行文件上运行<代码> LDD 显示了当我编译一个简单的C++程序时链接到的库的子集。


我需要链接什么才能阻止此错误?

好吧,我在问了这个问题后,立即发现了解决方案。通过使用
mpif90-f90=ifort-v(源文件)
我能够看到链接的所有内容,并一次一个地尝试每个库,直到它工作为止

y