注册 登录
编程论坛 VC++/MFC

VC调用Fortran动态链接库

myvc 发布于 2012-07-11 21:34, 907 次点击
好久没来了,今天来问各位大侠一个问题!

现在在搞VC调用fortran的DLL 的问题,但是在Fortran编译成DLL时就出现了问题,我用Fortran编译成的DLL用Depends.exe查看时看不到入口函数,不知道是什么原因,是Fortran编译器设置错误还是别的什么问题啊?我用的Fortran编译器为Miscrosoft Fortran Powerstation 4.0,用到的例子是在网上Copy的,如下:
function GetAdd(a, b) result(r)
       implicit none
       !DEC$ ATTRIBUTES DLLEXPORT::GetAdd
       integer :: a
       integer :: b
       integer :: r
       r = a + b
       return
end
在VC中调用如下:
    this->UpdateData();
    HMODULE hDll = LoadLibraryEx(TEXT("testA.dll"), NULL,
        DONT_RESOLVE_DLL_REFERENCES);
    if (!hDll)        
    {        
        MessageBox("加载动态链接库失败", "ERROR", MB_OK);        
        return;        
    }

    int (__stdcall *proc)(int *, int *);       //注意声明方式指向函数的指针,要求有__stdcall
    proc = (int (__stdcall *)(int *, int *))GetProcAddress(hDll, "GETADD");

    if (!proc)        
    {        
        MessageBox("加载函数失败", "ERROR", MB_OK);        
        FreeLibrary(hDll);        
        return;        
    }

    m_res = proc(&m_a, &m_b);

    AfxMessageBox(s);
    this->UpdateData(false);
    FreeLibrary(hDll);

结果提示加载函数失败,不知道什么原因啊,希望哪位大侠给予解答,谢谢!
1 回复
#2
myvc2012-07-12 16:56
问题已解决,是编译器的问题,现在用Visual Fortran6.5
1