2、修改注册表:
假设出错的应用程序名为“Project1.exe”,打开注册表,找到如下主键:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options]
新建一个“Project1.exe”项,然后再其下创建一个字符串值,键值名为“DisableHeapLookAside”,内容设为“1”即可(有时候留空也有效)。
上面两种方法只试过了第一种,程序脱离IDE运行没有再出现这个错误。但偶尔在IDE中运行还是会弹出这个错误(例如ShellExecute函数经常会弹出这个错误)。
对于“External Exception EEFFACE”这个错误产生的原因在于---bcb采用的vcl库是由pascal语言写的,当C++代码产生的异常对象不是vcl提供的Exception类的子类对象时,就会报出这个错误。可以新建工程将下面代码测试一遍就会发现这个问题。
[url=]
[/url]
//---------------------------------------------------------------------------#include <vcl.h>#pragma hdrstop#include "Unit1.h"//---------------------------------------------------------------------------#pragma package(smart_init)#pragma resource "*.dfm"TForm1 *Form1;class MyException1{public: MyException1(AnsiString msg){Message=msg;}public: AnsiString Message;};class MyException2:public Exception{public: MyException2(AnsiString msg):Exception(msg){Message=msg;}public: AnsiString Message;};//---------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner){}//---------------------------------------------------------------------------void __fastcall TForm1::Button1Click(TObject *Sender){ throw MyException1("test1");}//---------------------------------------------------------------------------void __fastcall TForm1::Button2Click(TObject *Sender){ throw MyException2("test2");}//---------------------------------------------------------------------------[url=]
[/url]