回 帖 发 新 帖 刷新版面

主题:请问:如何用VC++调用Fortran动态连接库写文件?


程序功能:点击“Add”调用Fortran编写的动态连接库“ExFor.dll”计算c=a+b
 
Add响应函数:
void ADLG::OnAdd() 
{
    // TODO: Add your control notification handler code here
    this->UpdateData();
    HMODULE hDll=LoadLibraryEx(TEXT("ExFor.dll"),NULL,DONT_RESOLVE_DLL_REFERENCES);
    if(!hDll)
    {
       MessageBox("fail","ERROR",MB_OK);
       return;
    }
    float(_stdcall *proc)(float*,float*);
    proc=(float(_stdcall*)(float*,float*))GetProcAddress(hDll,"ADD");
    if(!proc)
    {
        MessageBox("fail","ERROR",MB_OK);
        FreeLibrary(hDll);
        return;
    }
    m_edit3=proc(&m_edit1,&m_edit2);
    this->UpdateData(false);
    FreeLibrary(hDll);
}
Fortran动态连接库ExFor.dll
function ADD(a,b) result(c)

  !DEC$ ATTRIBUTES DLLEXPORT::Add

real a,b,c

c=a+b
open(1,file='D:\Program\LDLmain\LDL\Debug\output.dat')
write(1,*) c
return
end function ADD  

问题1:调试“ExFor.dll”时,到“open(1,file='D:\Program\LDLmain\LDL\Debug\output.dat')”出现错误。删除语句
open(1,file='D:\Program\LDLmain\LDL\Debug\output.dat')
write(1,*) c
则运行成功
请问如何改写?


 

问题2:重新打开动态连接库工程后,再连接生成“ExFor.dll”时,出现错误如下:

--------------------Configuration: ExFor - Win32 Debug--------------------
Linking...
   Creating library Debug/ExFor.lib and object Debug/ExFor.exp
dfor.lib(DFORMAIN.OBJ) : error LNK2001: unresolved external symbol _MAIN__
Debug/ExFor.dll : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

ExFor.dll - 2 error(s), 0 warning(s)



回复列表 (共1个回复)

沙发

问题1:出现什么错误?
问题2:应该是工程文件有问题吧。

我来回复

您尚未登录,请登录后再回复。点此登录或注册