Visual studio 使用minGW创建用于英特尔Fortran的静态库

Visual studio 使用minGW创建用于英特尔Fortran的静态库,visual-studio,visual-c++,g++,mingw,intel-fortran,Visual Studio,Visual C++,G++,Mingw,Intel Fortran,让我首先说明我不是一名程序员。我是一名机械工程师,必须使用来自其他工程师的代码,并将其组装成可执行文件。主代码是fortran,通过Visual Studio 2008使用英特尔fortran编译(是的,非常旧的版本)。其中一个支持代码是C++。通常,我使用内置的Visual C++编译器编译C++代码到静态库中,然后将静态库链接到主FORTRAN代码。C++代码的最新更新将不会在2008 Visual C++中编译,因为它需要/允许选项。所以,我尝试用C++将C++代码编译成静态库。执行此操作

让我首先说明我不是一名程序员。我是一名机械工程师,必须使用来自其他工程师的代码,并将其组装成可执行文件。主代码是fortran,通过Visual Studio 2008使用英特尔fortran编译(是的,非常旧的版本)。其中一个支持代码是C++。通常,我使用内置的Visual C++编译器编译C++代码到静态库中,然后将静态库链接到主FORTRAN代码。C++代码的最新更新将不会在2008 Visual C++中编译,因为它需要/允许选项。所以,我尝试用C++将C++代码编译成静态库。执行此操作时,会出现未解决的外部符号错误。C++代码我使用它非常复杂,所以我决定做一个简单的例子,看看我是否能让它工作。我有类似的错误,但是因为它很简单,我可以在这里发布它。我相信这个论坛的人可以在几分钟内修复它。这里是C++代码:

    #include <fstream>
#include <iostream>


#include <string.h>



#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <math.h>

//------------------------------------------------------------------------



extern "C"
{
void add_2_nums(double *x,double *y,double *z);


}




 extern "C" void add_2_nums(double *x,double *y,double *z)
{
    
    *z = *x + *y;


    return;
}
我在试图解决错误时使用的一些编译器选项来自这个论坛,可能不合适

下面是简单的fortran代码:

program gcc_fun

implicit none

! Variables
real*8 x,y,z

x = 3.d0
y = 17.d0

call add_2_nums(x,y,z)

! Body of gcc_fun
print *, 'Z = ', z

end program gcc_fun
我在VisualStudio环境中使用C、引用编译选项和rest默认值。以下是我得到的错误:

    Error   1    error LNK2019: unresolved external symbol __ZNSt8ios_base4InitD1Ev referenced in    function ___tcf_0  add_2_num.lib(static_lib_test.o)    
Error   2    error LNK2019: unresolved external symbol __ZNSt8ios_base4InitC1Ev referenced in function __GLOBAL__sub_I_add_2_nums   add_2_num.lib(static_lib_test.o)    
Error   3    fatal error LNK1120: 2 unresolved externals    Debug\gcc_fun.exe   
    Error   1    error LNK2019: unresolved external symbol __ZNSt8ios_base4InitD1Ev referenced in    function ___tcf_0  add_2_num.lib(static_lib_test.o)    
Error   2    error LNK2019: unresolved external symbol __ZNSt8ios_base4InitC1Ev referenced in function __GLOBAL__sub_I_add_2_nums   add_2_num.lib(static_lib_test.o)    
Error   3    fatal error LNK1120: 2 unresolved externals    Debug\gcc_fun.exe