永发信息网

C++ DLL异常处理

答案:2  悬赏:20  手机版
解决时间 2021-02-27 17:19
  • 提问者网友:战皆罪
  • 2021-02-26 20:28
C++的程序
exe动态调用一个dll,dll中有
故意引发一个异常,比如:

int *i=NULL;
*i=5;//c0000005异常,读无效地址

请问如何在exe中捕获并处理这个异常后让exe继续正常执行而不退出?
谢谢

不行啊,根本不执行catch
最佳答案
  • 五星知识达人网友:酒安江南
  • 2021-02-26 21:31
try
catch
end try
全部回答
  • 1楼网友:笑迎怀羞
  • 2021-02-26 21:46
1.__stdcall 以“?”标识函数名的开始,后跟函数名; 函数名后面以“@@yg”标识参数表的开始,后跟参数表; 参数表以代号表示: x--void , d--char, e--unsigned char, f--short, h--int, i--unsigned int, j--long, k--unsigned long, m--float, n--double, _n--bool, .... pa--表示指针,后面的代号表明指针类型,如果相同类型的指针连续出现,以“0”代替,一个“0”代表一次重复; 参数表的第一项为该函数的返回值类型,其后依次为参数的数据类型,指针标识在其所指数据类型前; 参数表后以“@z”标识整个名字的结束,如果该函数无参数,则以“z”标识结束。 其格式为“?functionname@@yg*****@z”或“?functionname@@yg*xz”, 例如 int test1(char *var1,unsigned long)-----“?test1@@yghpadk@z” void test2() -----“?test2@@ygxxz” 2 __cdecl调用约定: 规则同上面的 _stdcall 调用约定,只是参数表的开始标识由上面的“@@yg”变为“@@ya”。 3 __fastcall调用约定: 规则同上面的_stdcall调用约定,只是参数表的开始标识由上面的“@@yg”变为“@@yi”。 vc++对函数的省缺声明是"__cedcl",将只能被c/c++调用。 这是c++编译时的函数改名规则,c++函数改名主要是为了函数重载,而在c中不存在函数重载的问题,可以看出c++编译后函数的新名字很复杂。 所以只能通过extern来声明c函数编译命名规则来调用dll中的导出函数
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯