好的,这是在黑暗中拍摄的,因为我已经束手无策了。我有两个在 VB6 中运行良好的第三方 DLL,但在 VB.NET 或 C# 中却没有那么多。
在 VB6 中,以下工作正常:
Dim oApplication As Object
Dim oSession As Object
Dim vRetCode As Variant
Set oApplication = CreateObject("OAPPLICA.OAPPLICA")
Set oSession = CreateObject("OSESSION.OSESSION")
oApplication.PROGRAMDRIVE = "\\dev\data\"
oApplication.WORKAREADRIVE = "\\dev\data\workarea\"
oApplication.DATADRIVE = "\\dev\data\"
oApplication.IMAGEDRIVE = "\\dev\data\image\"
oSession.MYAPPLICATION = oApplication
vRetCode = oSession.LOGIN("USER1", "PASSWORD1") 'Returns zero if successful
MsgBox (vRetCode)
当我在 VB.NET 中运行这组完全相同的代码时,我在“oSession.MYAPPLICATION = oApplication”行上得到“未找到成员。(来自 HRESULT 的异常:0x80020003(DISP_E_MEMBERNOTFOUND))”。
我也尝试在 VB.NET 和 C# 中进行早期绑定,但最终在不同的行上出现相同的错误。我在“oApplication.set_PROGRAMDRIVE("\\dev\lifepro\data\");”上得到了相同的错误 线。
private OAPPLICA.OAPPLICA oApplication = new OAPPLICA.OAPPLICA();
private OSESSION.OSESSION oSession = new OSESSION.OSESSION();
Int64 iReturnCode;
oApplication.set_PROGRAMDRIVE("\\\\dev\\data\\");
oApplication.set_WORKAREADRIVE("\\\\dev\\data\\workarea\\");
oApplication.set_DATADRIVE("\\\\dev\\data\\");
oApplication.set_IMAGEDRIVE("\\\\dev\\data\\image");
m_oSession.set_MYAPPLICATION(m_oApplication);
iReturnCode = Convert.ToInt64(m_oSession.LOGIN("USER1", "PASSWORD1"));
如前所述,这两个 DLL(OAPPLICA.dll 和 OSESSION.dll)是第三方的,并允许进入第三方遗留系统的入口点。由于它是遗留的,我无法再访问第三方,我的任务是尝试将现有的 Windows VB6 应用程序原型转换为 .NET Web 应用程序。我的预感是 .NET 在解释两个 COM 对象的互操作 DLL 时遇到问题,但我一直无法找到任何可以为我指明方向的东西。