【发布时间】:2014-05-12 14:17:23
【问题描述】:
我想在 C++ 代码中加载一个 fortran dll 并在 fortran dll 中调用一个函数。
下面是代码
SUBROUTINE SUB1()
PRINT *, 'I am a function '
END
创建 foo.dll [fotran dll] 后,这是我在 Visual Studio 2012 中编写的用于加载 fortran dll 的以下 C++ 代码。 并在fortran代码中调用函数SUB1
#include <iostream>
#include <fstream>
#include <Windows.h>
using namespace std;
extern "C" void SUB1();
typedef void (WINAPI *PGNSI)(LPSYSTEM_INFO);
int main(void)
{
LoadLibrary(L"foo.dll");
PGNSI pGNSI = (PGNSI) GetProcAddress(GetModuleHandle(TEXT("foo.dll")),"SUB1");
return 0;
}
运行时出现以下错误:
程序无法启动,因为您的计算机中缺少 libgcc_s_dw2-1.dll。 尝试重新安装程序以解决此问题。
这是从 C++ 调用 dll 的正确方法吗? 我对这个 fortran dll 很陌生。请帮我解决这个问题。
【问题讨论】:
-
请发布您的操作系统、Fortran 和 C++ 编译器。编译器标志也会很有用。尝试搜索 fortran-iso-c-binding 以开始 Fortran-C 互操作性。