VB6.exe应用程序出错“0x7c939af2”指令引用的“0x00000010”内存该内存不能为written
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VB6.exe应用程序出错“0x7c939af2”指令引用的“0x00000010”内存该内存不能为written相关的知识,希望对你有一定的参考价值。
参考技术A 内存错误 导致原因1 驱动程序不稳定,或者与操作系统、计算机硬件不兼容,极易引发内存不能为read错误;(由于开发者水平差异较大,个别RP和技术都很差的程序员也开始写驱动程序了,小则引起“内存不能为read”,大则引发机器蓝屏,最后还把责任推卸给别人。)蓝屏代码:D805AB914BA4FEF0BA3473226E713E6A.
2 不小心安装了流氓软件或IE流氓插件;
3 正在加载的程序与已经运行的发生冲突,如有的杀毒软件实时监控程序,会和其它杀毒软件争夺系统控制权,导致内存不能为read;
4 计算机感染了病毒;
5 玩游戏时出现内存不能为Read,则是因为显卡驱动不匹配;
6 夏天时硬件过热,散热不好,导致内存故障,不能为Read;
7 内存条与主板兼容性问题,导致内存不能为Read
解决办法 1 用360安全卫士全盘扫描 系统修复 IE清理
2 在运行里面输入CMD 出来黑色框框 右击沾上命令
for %1 in(%windir%\system32\*.dll) do regsvr32.exe /s %1
3 单个游戏出现错误 驱动与系统兼容问题,重新安装驱动或卸载显卡驱动,重新安装官方驱动
4 结束一些正在运行的软件或进程,看是否还会出现错误
5内存本身存在问题,或坏掉等,拔掉擦拭之后重新插上试试,不行只能更换内存
6查看一下:在命令行敲入cmd运行regedit进入注册表进入到注册表编辑器之后,在HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Explorer/ShellExecuteHooks下,
应该只有一个正常的键值"AEB6717E-7E19-11d0-97EE-00C04FD91972, 将其他的删除追问
最后一项,我电脑上面除了你说的这个值,上面还有个默认的值
追答默认的可以留着 如果还是不行的话 估计要下载另外一个VB6软件试试
vb怎么做个vb编译器?
就是让vb能解释vb工程文件(.vbp)
软件能把vb源文件给编译出来
在调用之前已经在临时目录下生成了一堆看不懂的东西。
但你可以调用VB主程序的命令行来生成程序,如你要生成的程序在D盘根目录,工程文件为
1.vbp那你可以在CMD里打VB6.exe /make D:\1.vbp
具体的可以参照VB6.exe /?
附:
VB的编译过程大致如下,当我们在编辑环境中编写完代码后,VB调用C2将所有的模块(包括CLASS)编译成OBJ文件(能够为机器语言识别的代码)。一下是C2的一些编译参数说明(E文):
- the the name of the prefixed one used for the names of the rowscontaining ' precompilato', one
risen of intermediate tails (from which name of the switch) temporary; these rows are 5 and finish withi suffissi GL, SY, FORMER, IN and DB; they contained are not documented
- f the name of the rows to compile
- W3 warning level 3, level of ' attenzione' dedicating to i warnings
- Gy it qualifies the connection to level of function (function-level linking)
- G5 optimization for the Pentium
- Gs4096 it allows not to insert the code for the control of stack (stack probe) if a function does not
use more than 4096 byte of stack
- dos not documented
- Z1 it removes the name of the bookcase of default from the rows.OBJ
- Fofileobj the name of rows OBJ to generate (rows output)
- Qifdiv it puts in action the corrections for the bug of the division of the Pentium (FDIV bug)
- MILILITER it creates rows eseguibile single-threaded
- basic it indicates the compiler C2 the fact that the compilation it happens for a plan basic
C2完成编译后,VB会调用LINK.EXE将所有的OBJ文件连接成EXE文件,完成编译过程。下面是一段命令行演示如何调用LINK.EXE:
LINK C:\Test\Form1.obj C:\Test\Modulo1.obj C:\Test\Progetto1.obj C:\Programmi\Microsoft Visual Studio\VB98\VBAEXE6.lib /ENTRY:__ vbaS /OUT:C:\Test\Progetto1.exe /BASE:0x400000 /SUBSYSTEM:WINDOWS, 4.0 /VERSION:1.0 /DEBUG /DEBUGTYPE:CV /INCREMENTAL:NOT /OPT:REF/MERGE:.rdata =.text /IGNORE:4078
对于我们来说这些参数没有什么意义,用默认的就行了。这段命令行中并没有包括输出函数,如果我们希望输出函数,可以定义一个.def文件,按照格式加入要输出的函数列表,然后在命令行后面加上 “/DEF: 文件名”(当然也可以直接加/ EXPORTS参数),再调用命令行编译,用的denpendency工具查看你就会发现你要输出的函数了。
Def文件格式的定义:
LIBRARY 程序名称
DESCRIPTION "MyDLL - (C) Antonio Giuliana, 2004"
EXPORTS
函数名= ?函数名@函数所在模块名@@AAGXXZ
…
例:
LIBRARY MyDLL
DESCRIPTION "MyDLL - (C) Antonio Giuliana, 2004"
EXPORTS
DllRegisterServer= ?DllRegisterServer@SymExp@@AAGXXZ
DllUnregisterServer= ?DllUnregisterServer@SymExp@@AAGXXZ
注意:函数名和模块名是区分大小写的
我先用Vb编一个截取C2、LINK命令的程序:
C2:
Private Sub Form_Load()
f = UCase$(Left$(Command$, 256))
Open "E:\C2.txt" For Output As #1
Print #1, f
Close
End
End Sub
LINK:
Private Sub Form_Load()
f = UCase$(Left$(Command$, 256))
Open "E:\C2.txt" For Output As #1
Print #1, f
Close
End
End Sub
生成EXE后把VB98下的c2与LINK剪切到别处,在用这两个程序代替。运行VB6.exe,随意打开一个工程,点文件菜单,生成EXE。
不久我编的两个程序就送给我梦寐以求的文件:
E:\C2.txt
-IL "C:\DOCUME~1\ADMINI~1\LOCALS~1\TEMP\VB381884" -F "E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VB98\新建文件夹 (2)\FORM1.FRM" -W 3 -GY -G5 -GS4096 -DOS -ZL -FO"E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\FORM1.OBJ" -QIFDIV -ML -BASIC
E:\LINK.txt
"E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\FORM1.OBJ" "E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\LINK.OBJ" "E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VB98\VBAEXE6.LIB" /ENTRY:__VBAS /OUT:"E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\LINK.EXE" /BASE:0X400000 /SUBS
这两个TXT就是VB送给c2以及LINK的命令。
详细解读如下:
C2.txt
-IL "C:\DOCUME~1\ADMINI~1\LOCALS~1\TEMP\VB381884" -F "E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VB98\新建文件夹 (2)\FORM1.FRM"是c2准备处理的两个文件。 -W 3 -GY -G5 -GS4096 -DOS -ZL是c2生成OBJ的格式,后边则是OBJ文件的地址。
LINK.txt
"E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\FORM1.OBJ" "E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\LINK.OBJ"是源文件。"E:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VB98\VBAEXE6.LIB"是转换库。后面是EXE文件地址及格式 参考技术A 。。。
先运行C1.EXE
再运行LINK.EXE 参考技术B 去看雪论坛看看吧 参考技术C 没明白你的意思,说详细点。
以上是关于VB6.exe应用程序出错“0x7c939af2”指令引用的“0x00000010”内存该内存不能为written的主要内容,如果未能解决你的问题,请参考以下文章