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