Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb6应用程序在IDE中工作,但可执行文件崩溃_Vb6_Crash_Executable - Fatal编程技术网

Vb6应用程序在IDE中工作,但可执行文件崩溃

Vb6应用程序在IDE中工作,但可执行文件崩溃,vb6,crash,executable,Vb6,Crash,Executable,我对VisualBasic6项目有点问题。在IDE中一切正常 但每次运行应用程序时,可执行文件都会崩溃。应用程序使用回调与C++ DLL通信。即使像显示消息框这样简单的代码在回调启动时也会失败 我将编译模式更改为p代码,但问题仍然存在 任何帮助都将不胜感激 谢谢大家代码是否从与IDE相同的位置运行?可能是引用问题,需要重新注册DLL 部署包应确保您已安装所有内容。谁回电话给谁?给我们看一点代码 IDE可以掩盖真正的问题,因此仅仅能够运行并不能保证您所做的工作得到支持 回调的一个常见问题是VB6的

我对VisualBasic6项目有点问题。在IDE中一切正常 但每次运行应用程序时,可执行文件都会崩溃。应用程序使用回调与C++ DLL通信。即使像显示消息框这样简单的代码在回调启动时也会失败

我将编译模式更改为p代码,但问题仍然存在

任何帮助都将不胜感激


谢谢大家

代码是否从与IDE相同的位置运行?可能是引用问题,需要重新注册DLL


部署包应确保您已安装所有内容。

谁回电话给谁?给我们看一点代码

IDE可以掩盖真正的问题,因此仅仅能够运行并不能保证您所做的工作得到支持

回调的一个常见问题是VB6的运行时不是线程安全的,因此,如果另一个线程正在回调VB代码,则无法执行任何将调用运行时的操作,如访问字符串或对象

解决这些问题有很多方法,但我认为我们需要先了解更多。

几个问题:

  • 可执行文件与开发时在同一台PC上,还是另一台
  • 该文件是否使用清单文件?如果是这样,mainfest是否调用XP主题
  • 另外,如果使用清单,清单是否对OCX文件使用SXS

  • 这听起来像是回调可能发生在与应用程序正在执行的线程不同的线程上。[编辑:正如我看到Jim已经建议的那样。]如果是这样,是的,kaboom只要您“触摸”与OLE相关的任何内容或调用到运行时。与多媒体计时器回调、fwiw的情况相同,我怀疑如果是这种情况,您将不得不采取与这些相同的预防措施

    不同线程回调的简短故事是,您需要使用typelib中声明的PostMessage向自己发布一条消息,这样Err对象就不会由VB设置,然后让回调返回。您在收到已发布的邮件后自行处理。以下是我在CCRP定时器库中使用的typelib:


    希望有帮助…

    当它崩溃时是否显示任何错误消息?是的,是相同的位置,事实上,对相同dll的其他调用工作正常。您是延迟绑定还是提前绑定?下面的评论也是正确的。。。发布导致崩溃的代码段/调用对象会很好。非常感谢Karl,很抱歉我的无知,但这是我的第一个visual basic 6项目。如何使用tlb文件,我尝试在VB IDE中添加引用,但不起作用,我可以将结构或类类型传递给postMethod,因为回调返回给我4个值。