- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经搜索了几个小时,但找不到类似的内容。
这次崩溃有两种情况:一种是“运行时错误 '-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
...
当调用第三方 Delphi DLL 中的特定基本函数时会出现问题,但我不能直接声明该 DLL 有错误,因为这种情况只发生在我编译的程序可执行文件中。同样的 dll 被数百个其他客户使用,并且(至少目前)我是唯一遇到此问题的人。在客户的 PC 或第三方供应商的办公室中编译的相同源代码可以正常工作。
所以问题归结为:带有 SP6 的 VB6 从完全相同的源代码生成不同的二进制 exe 文件。在我的电脑上编译的那个在我的电脑上运行良好,我安装了一个干净的虚拟电脑来检查这一点,但在它应该的任何地方都不起作用;并且在客户或第三方供应商中编译的版本在除了我的电脑之外的任何地方都可以正常工作。
这与 Boost 描述的问题 ( see this link ) 不同,因为 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
是否有人有任何解决方案或(同样有用的)方法可以让供应商在他们自己的机器上重现此问题?
最佳答案
嗯,如果没有看到 Delphi 方面的情况,很难确定,但是当您在 DLL 调用中遇到这样的问题时,首先需要检查两个标准的事情。
首先,确保 DLL 函数及其在 VB 程序中的导入 header 使用相同的调用约定。如果 VB 将参数放在一处,而 Delphi DLL 在其他地方查找它们,则会出现未定义的行为。
其次,确保两侧使用相同的字符串类型。如果这是 COM,则您的字符串类型应该是 COM BSTR 类型,在 Delphi 中称为 WideString。不知道VB怎么调用它。如果您向 DLL 传递的字符串类型与预期接收的字符串类型不同,它将获得损坏的数据。
仔细检查这两件事,看看是否不能解决问题。
关于delphi - 调用 Delphi DLL 会使 VB6 exe 崩溃,错误代码为 "Run-time error ' -2147418113 (8000ffff )' Method ' ~' of object ' ~' failed",但仅在某些机器上!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4298380/
我正在努力处理不同的 R 可执行文件。在批处理文件中运行命令行时,R.exe(带或不带 CMD BATCH 选项)、Rcmd.exe、Rscript.exe 和 Rterm.exe 有什么区别? 两者
这个问题是我之前问题的一个答案的扩展:how to save user registration in the exe... (C#) . 这个想法本身对我来说仍然很新,但它似乎是合理的。我第一次尝试
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 12 年前。 Improve thi
我正在使用 React VR 制作一个 WebVR 应用程序。我将使用 Oculus Rift 和 HTC-Vive 测试该应用程序。我正在使用浏览器 Firefox Nightly 来访问 WebV
当我从 A.exe(位于 c:/my_software/FOLDER_A/A.exe)运行 B.exe(位于 c:/my_software/FOLDER_B/B.exe)时,两者均使用 cx_Free
我有一个以前的程序员留下的exe(GUI),它是在cpp中完成的,但是我需要禁用程序中的一些键盘键,因为当它们被意外击中时,这是不可取的。我正在使用 Windows。 我能否编写一个程序来在 Wind
这不是以下 SO 问题的重复: How do I tell if a win32 application uses the .NET runtime . 如果给定的 exe 文件是 .net exe
我刚刚安装了 ActivePython 3.6 的 64 位版本,发现它包含三个可执行文件,它们报告相同的版本信息,大小相同,但不完全相同,即peer fc.exe。我有 python.exe pyt
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 9
有哪些方法可以保护exe文件免遭逆向工程。有很多打包工具可以打包exe文件。这种方法在http://c-madeeasy.blogspot.com/2011/07/protecting-your-c-
仅当应用“X”(Inspect.exe | Narrator.exe | Magnify.exe)正在运行时,我才能在 Windows 应用程序中获取一些 IUIAutomationElements。
我正在编写一个创建 Windows 服务的程序。所以我需要两个 .exe 文件——一个用于程序,创建服务,另一个用于服务本身。但是我想将这两个文件合二为一。我有以下想法 - 打开 .exe 文件,我想
我有一个 UWP 应用,我需要从 users %appdata% 文件夹中启动一个 .Exe 文件。 我不知道如何找到 %appdata% 或如何启动 Exe 文件。 我已经查看了所有解决方案,但没有
我最近安装了 Visual Studio 2017,MSBuild.exe 不是应该自带的吗? bash 脚本之一正在调用它,但找不到任何东西。 这是 build.bat 产生错误的部分(您可以看到整
我正在我自己的代码中尝试来自 Mad-collections(用于在 exe 中添加/删除或更新资源的单元)中 Madres 单元的不同功能。这适用于小型资源(小于 50 MB),但对于较大的资源(大
什么是PreEmptive Protection Dotfuscator exe文件的Map.Xml和Dotfuscator1.Xml文件。我应该出于某种原因保留它们,还是项目 exe 文件组装需要它
我最近接手了一个项目,我不确定最后一个人是如何调试这个的......我有两个可执行文件,一个最终运行另一个。我将它们称为 exe1 和 exe2。这些是用 C# 创建的,我使用 Visual Stud
如何从 REBOL 脚本创建 Windows 可执行文件 (.exe)?有任何说明或视频吗? 最佳答案 使用 Rebol 2 最简单的方法是使用 SDK - 尽管这需要花钱购买许可证。该方法称为封装。
我正在尝试打开下载的 .exe 文件,但它在打开后立即关闭。有什么可能的方法可以让我打开它更长的时间来阅读内容。 最佳答案 它可能是一个控制台应用程序而不是一个 GUI 应用程序。使用命令提示符运行
我想运行一个位于以下目录中的应用程序: C:\LCR 12\stu.exe 使用 AutoIt,运行上述 stu.exe 文件的代码是什么? 最佳答案 像这样: Run("C:\LCR 12\stu.
我是一名优秀的程序员,十分优秀!