回 帖 发 新 帖 刷新版面

主题:vb生成的exe文件无法运行,错误:类型不存在

我的一个VB工程直接生成exe文件后,在自己的机器,还有另外4台机器上都可以正常运行,但是在一台xP上不能运行。
提示:System error & H80070583(-2147023485).类别不存在。

请问这种情况是不是应该是我的代码有问题,还是这台机器有问题呢?是需要什么文件吗?我用VBPowerwrap对我的工程打包的时候,他自动扫描了除了需要 msvbvm60.dll外,还打包了madatsrc.tlb和stdole2.tlb两个文件,会不会是这个的原因?(用VPPowerwrap打包后的还没有到那个失败的机器上试过)

还有就是我写这个工程的时候,“部件”上勾选了一些其他的控件,MSform,但是我并没有使用上面的控件 ,这个会不会有影响?一个朋友说,即使不用那些非标准空间,但是你在“部件”里面勾选了,就要调用相应的文件,不知是不是这样?

回复列表 (共11个回复)

沙发

tlb文件是不需要的

板凳

那会是什么原因呢? 失败的那台机器上有msvbvm60.dll的阿

3 楼

在网上搜到 这样的解释  : 
On   Windows   XP   machines   compiling   a   VB   5.0/6.0   project   may   fail   with   the   following   error:System   Error   &H80070583   (-2147023485).   Class   does   not   exist.   
    
  This   will   happen   only   if   a   manifest   file   is   used   for   VB5.EXE   or   VB6.EXE   and   the   project   or   its   dependents   do   not   have   an   explicit   reference   to   COMCTL32.OCX.

我怎么让我的程序和comctl32.ocx有个明确的关联呢? 是不是我的那台机器里面少了一个这个文件?

4 楼

可以在程序代码里面加上调试语句,以便在发生未知错误时捕获错误Error

5 楼

因为在XP系统下你使用了manifest文件而没有用InitCommonControls初始化

6 楼

[quote]可以在程序代码里面加上调试语句,以便在发生未知错误时捕获错误Error[/quote]

呵呵,我现在不会用这个,才写了几天代码。还要去看看,谢谢

7 楼

[quote]因为在XP系统下你使用了manifest文件而没有用InitCommonControls初始化[/quote]
查了下,这个就是使窗体显示xp风格的文件。
我怎么可以知道我用了mainfest文件呢?可不可以不用这个文件呢?

我还是不明白的就是为什么其他机器的可以呢?
我现在比较急得想法是能否通过对我那台电脑怎么弄一下?拷相关的文件,控件注册?让程序现在可以运行呢?
然后我再去慢慢的改我的程序

8 楼

可以把文件发上来看一下吗?

9 楼

我也只是猜测而已。如果完全是你自己写的程序,你应该知道是否使用了mainfest文件。使用mainfest文件有两种方法:
1、有一个app.exe.mainfest文件存在(app表示你的可执行文件名称)
2、使用资源文件。

从这两个途径你就可以知道是否使用了。
不使用没有任何问题,但使用的话就必须用InitCommonControls初始化。

10 楼

没有app.exe.maifest文件存在。
关于资源文件,我通过VB输出exe文件后,用exescope改过程序的ico,会不会是这个问题哦?

我来回复

您尚未登录,请登录后再回复。点此登录或注册