我必须在 C++ 中创建一个动态 DLL 库,以替换用 Fortran 编写的旧 DLL 库,而无需更改主机应用程序(因此函数和参数必须保持不变)。
我对该库中的所有 Fortran 函数都有完整的规范,但是我需要使用哪些工具(编译器),以及在这种情况下编码 DLL 的方式是什么(stdcall、cdecl、dllexport 等)——这些线索并没有说太多对我来说,我以前从未创建过 DLL)。
这是旧版 DLL 中的示例 Fortran 函数声明:
SUBROUTINE SetBoundaries(MaxFlow, MinFlow)
cDEC$ ATTRIBUTES DLLEXPORT :: SetBoundaries
cDEC$ ATTRIBUTES ALIAS: "SetBoundaries" :: SetBoundaries
REAL MaxFlow
REAL MinFlow
我试图编译 VC2008 DLL 但出现错误:
“InitAllPublicVars”运行时错误 453 中的未处理错误:在 SomeLib.DLL 中找不到 DLL 入口点 DLLVersion
此 DLL 的来源(定义名为 DLLVersion 的函数没有帮助):
void __stdcall SetBoundaries( float *min , float *max ) {
}
DLLVersion 是一些特殊的 DLL 程序还是我的文档中缺少我应该创建这样的函数?
我不知道有关原始 Fortran DLL 源/编译过程的详细信息,但有一些提取的信息: