主题:vb生成的exe文件无法运行,错误:类型不存在
smilesch
[专家分:70] 发布于 2007-09-21 13:29:00
我的一个VB工程直接生成exe文件后,在自己的机器,还有另外4台机器上都可以正常运行,但是在一台xP上不能运行。
提示:System error & H80070583(-2147023485).类别不存在。
请问这种情况是不是应该是我的代码有问题,还是这台机器有问题呢?是需要什么文件吗?我用VBPowerwrap对我的工程打包的时候,他自动扫描了除了需要 msvbvm60.dll外,还打包了madatsrc.tlb和stdole2.tlb两个文件,会不会是这个的原因?(用VPPowerwrap打包后的还没有到那个失败的机器上试过)
还有就是我写这个工程的时候,“部件”上勾选了一些其他的控件,MSform,但是我并没有使用上面的控件 ,这个会不会有影响?一个朋友说,即使不用那些非标准空间,但是你在“部件”里面勾选了,就要调用相应的文件,不知是不是这样?
回复列表 (共11个回复)
沙发
hpygzhx520 [专家分:1580] 发布于 2007-09-21 14:15:00
tlb文件是不需要的
板凳
smilesch [专家分:70] 发布于 2007-09-21 14:21:00
那会是什么原因呢? 失败的那台机器上有msvbvm60.dll的阿
3 楼
smilesch [专家分:70] 发布于 2007-09-21 14:42:00
在网上搜到 这样的解释 :
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 楼
leaoko [专家分:20] 发布于 2007-09-22 10:46:00
可以在程序代码里面加上调试语句,以便在发生未知错误时捕获错误Error
5 楼
hpygzhx520 [专家分:1580] 发布于 2007-09-22 12:06:00
因为在XP系统下你使用了manifest文件而没有用InitCommonControls初始化
6 楼
smilesch [专家分:70] 发布于 2007-09-22 12:24:00
[quote]可以在程序代码里面加上调试语句,以便在发生未知错误时捕获错误Error[/quote]
呵呵,我现在不会用这个,才写了几天代码。还要去看看,谢谢
7 楼
smilesch [专家分:70] 发布于 2007-09-22 12:28:00
[quote]因为在XP系统下你使用了manifest文件而没有用InitCommonControls初始化[/quote]
查了下,这个就是使窗体显示xp风格的文件。
我怎么可以知道我用了mainfest文件呢?可不可以不用这个文件呢?
我还是不明白的就是为什么其他机器的可以呢?
我现在比较急得想法是能否通过对我那台电脑怎么弄一下?拷相关的文件,控件注册?让程序现在可以运行呢?
然后我再去慢慢的改我的程序
8 楼
51pywg [专家分:1540] 发布于 2007-09-27 18:05:00
可以把文件发上来看一下吗?
9 楼
hpygzhx520 [专家分:1580] 发布于 2007-09-27 21:27:00
我也只是猜测而已。如果完全是你自己写的程序,你应该知道是否使用了mainfest文件。使用mainfest文件有两种方法:
1、有一个app.exe.mainfest文件存在(app表示你的可执行文件名称)
2、使用资源文件。
从这两个途径你就可以知道是否使用了。
不使用没有任何问题,但使用的话就必须用InitCommonControls初始化。
10 楼
smilesch [专家分:70] 发布于 2007-09-28 09:49:00
没有app.exe.maifest文件存在。
关于资源文件,我通过VB输出exe文件后,用exescope改过程序的ico,会不会是这个问题哦?
我来回复