我试图让 COM 从我的 Fortran 应用程序中工作。我做 aCOMINITIALIZE
后跟 a COMCreateObjectByProgID
。这两个似乎都成功并返回零状态。但是,当我尝试使用 COM 对象时,我得到:
Unhandled exception at 0x00000000 in FortranProg01.exe: 0xC0000005: Access violation.
我意识到这个错误可能意味着几乎任何事情,但是有没有人对产生这个问题的 COM 常见问题提出一些建议?我的程序代码:
program FortranProg01
use myolepg
implicit none
integer*4 comInitStatus
integer:: comCreateStatus
INTEGER(INT_PTR_KIND()) $OBJECT
INTEGER(4) funcResult
REAL(8) pkgVersion
call COMINITIALIZE(comInitStatus)
print *, comInitStatus
call COMCreateObjectByProgID('MyOlePg.MyOlePkg', $OBJECT, comCreateStatus)
print *, comCreateStatus
funcResult = IMyOlePkg_GetPackageVersion($OBJECT, pkgVersion)
print *, funcResult
call COMUNINITIALIZE()
end program FortranProg01
向导生成的界面代码:
INTERFACE
!property PackageVersion
INTEGER(4) FUNCTION IMyOlePkg_GetPackageVersion($OBJECT, pVal)
INTEGER(INT_PTR_KIND()), INTENT(IN) :: $OBJECT ! Object Pointer
!DEC$ ATTRIBUTES VALUE :: $OBJECT
REAL(8), INTENT(OUT) :: pVal
!DEC$ ATTRIBUTES REFERENCE :: pVal
!DEC$ ATTRIBUTES STDCALL :: IMyOlePkg_GetPackageVersion
END FUNCTION IMyOlePkg_GetPackageVersion
END INTERFACE
任何帮助将非常感激!