Я искал несколько часов, но не смог найти ничего похожего.
У аварии два варианта;один из них - «Ошибка времени выполнения» -2147418113 (8000ffff) «Метод» ~ «объекта» ~ «сбой», а второй вариант - полный сбой, когда Windows спрашивает, хочу ли я сообщить об этом в Microsoft.Во втором случае я решил отладить один раз, и он показал «Необработанное исключение в App.exe (OLEAUT32.DLL): 0xC0000005: Нарушение прав доступа».
На экране «Разборка» в верхней строке отображается желтый указатель:
>> 771148A4 mov ecx, dword ptr [esi]
771148A6 add ecx, 15h
771148A9 and ecx, 0FFFFFFF0h
771148AC push ecx
771148AD push esi
...
Проблема возникает при вызове конкретной важной функции в сторонней DLL-библиотеке Delphi, но я не могу прямо заявить, что DLL содержит ошибки, потому что это происходит только в исполняемых файлах программы, которые я компилирую.Эта же DLL используется в сотнях других клиентов, и (по крайней мере, на данный момент) я единственный, кто сталкивается с этой проблемой.Тот же самый исходный код, скомпилированный на ПК клиента или в офисе стороннего поставщика, работает нормально.
Таким образом, проблема сводится к следующему: VB6 с SP6 создает разные двоичные исполняемые файлы из одного и того же исходного кода.Тот, что скомпилирован на моем компьютере, прекрасно работает на моем компьютере, и чистый виртуальный компьютер, который я установил, чтобы проверить это, но не работает везде, где должен;и тот, который скомпилирован в клиенте или стороннем поставщике, работает нормально везде, кроме моего компьютера.
В отличие от проблемы, описанной Boost ( см. эту ссылку ), поскольку и в среде IDE, и в скомпилированномПриложение ведет себя одинаково на всех машинах.Они либо работают нормально, либо ужасно ломаются.
Public mXApp As XObjects.XApplication
Public Sub Main
On Error Resume Next
Set mXApp = New XObjects.XApplication
If Err.Number = 0 Then
MsgBox "Found: " & mXApp.Version & vbCrLf & mXApp.GetAppPath
Else
MsgBox "XApp DLL not found. " & Err.Number & ": " & Err.Description
End If
Err.Clear
End Sub
Public Sub Login(Byval uid As String, Byval pwd As String, Byval companyNr as Long)
Dim ok as Boolean
ok = mXApp.Login(uid, pwd, companyNr)' >> CRASH! Program never gets to the next line.'
If ok Then
MsgBox "Login success"
Else
MsgBox "Login fails"
End If
End Sub
Обратите внимание, что после создания объекта mXApp два вызова функции выполняются, а именно Version и GetAppPath, без каких-либо проблем.Сбой происходит при входе в систему.Браузер объектов VB IDE отображает определения трех функций следующим образом:
Function Version() As String
Function GetAppPath() As String
Function Login(UserName As String, Password As String, FirmNr As Long) As Boolean
Есть ли у кого-нибудь какие-либо решения или (в равной степени полезные) способы, которыми я могу заставить поставщика воспроизвести эту проблему на своих машинах?