标题:VC调用Fortran动态链接库
只看楼主
myvc
Rank: 2
等 级:论坛游民
威 望:1
帖 子:85
专家分:89
注 册:2009-10-25
结帖率:76.47%
 问题点数:0 回复次数:1 
VC调用Fortran动态链接库
好久没来了,今天来问各位大侠一个问题!

现在在搞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);

结果提示加载函数失败,不知道什么原因啊,希望哪位大侠给予解答,谢谢!
搜索更多相关主题的帖子: function result 编译器 
2012-07-11 21:34
myvc
Rank: 2
等 级:论坛游民
威 望:1
帖 子:85
专家分:89
注 册:2009-10-25
得分:0 
问题已解决,是编译器的问题,现在用Visual Fortran6.5
2012-07-12 16:56



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-373191-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020447 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved