调用dll导出函数时,为什么出现Access Violation错误.

aoj007aoj 2008-03-31 03:22:49
您好,我在一个MFC DLL中建立了一个对话框类,当用MFC EXE 调用此对话框时不会出现问题,但是当我向MFC DLL 中添加了一些对话框的消息事件后,再调用此DLL ,
运行时就会出现 应用程序错误消息框:"0x7c938fea" 指令引用的0x00000010内存。该内存不能为writen.
调试时会出现:First-chance exception :0xC0000005:Access Violation
请问有没有相关资料,或者您也可以告诉我如何将一个MFC 对话框应用程序转换为MFC DLL ,谢谢。
...全文
625 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
fjf0212 2012-10-15
  • 打赏
  • 举报
回复
不要InitInstance函数不行,直接退出程序了。
rickymathit 2008-04-02
  • 打赏
  • 举报
回复
你建立MFC DLL中的扩展DLL,这样才能够在DLL中响应消息映射,你试试吧,我曾经也遇到这样的问题,就这样解决了
piaoying12 2008-04-01
  • 打赏
  • 举报
回复
不要InitInstance函数试试
aoj007aoj 2008-04-01
  • 打赏
  • 举报
回复
谢谢大家
aoj007aoj 2008-03-31
  • 打赏
  • 举报
回复
不过常规DLL中真的没有InitInstance,那是我加上去的,怎么办?
aoj007aoj 2008-03-31
  • 打赏
  • 举报
回复
我弄错了,对不起,等等
aoj007aoj 2008-03-31
  • 打赏
  • 举报
回复
回复piaoying12:
哪里的InitInstance函数,EXE还是DLL,我DLL中没有这个函数,EXE中删除了之后还是出错。请再帮帮我,谢谢啦。
piaoying12 2008-03-31
  • 打赏
  • 举报
回复
呵呵 我也碰到过!
貌似是cpp文件中的InitInstance函数的问题!
DLL貌似不用实例化吧
把这个函数注释掉OK
试试!
如果对了可要加分阿!
呵呵!我猜的!
aoj007aoj 2008-03-31
  • 打赏
  • 举报
回复
我认为问题主要在添加头文件上面,我一旦给我的DLL程序添加了头文件,马上就会出现那个AV异常,
大伙可以教教我怎样能克服吗,谢谢啦。
aoj007aoj 2008-03-31
  • 打赏
  • 举报
回复
回复ddzz2001:
这不可能呀,我试过只载入对话框,并生成它的类后,通过DLL导出接口是可以导出的。同时我刚才也试了您所说的方法,把IDOK 和 IDR_MAINFRAME 的名称都改了,可是还是前面我所说的那个错误,谢谢。
小猪瑞比 2008-03-31
  • 打赏
  • 举报
回复
类重用时,在类试图中,类上单击右键,选择——Add To Gallery ,会把类以及和该类相关的对话框等资源一并导出成*.ocx文件。

DLL工程中不需要***App——这个类。。。
ddzz2001 2008-03-31
  • 打赏
  • 举报
回复
我碰过这样的问题,就是不知道你的情况跟我的一样不

我的问题是:DLL里的ID值跟exe里的ID有相同的(拷贝RC过来的就一样了),会导致运行错误。

给你参考下,嘻嘻!
aoj007aoj 2008-03-31
  • 打赏
  • 举报
回复
回复:ouyh12345
无法调式,根本无法进入EXE程序,我在以下函数都设置了断点:
CCallXXApp::CCallXXApp()
{
}
CCallXXApp theApp;
BOOL CCallXXApp::InitInstance()
可是程序都没有运行到,谢谢。
aoj007aoj 2008-03-31
  • 打赏
  • 举报
回复
回复:piaoying12
东西是我以前做的,不是别人的,哈哈
回复:ruibin1984
我用您的方法添加了类文件,可是经过运行,还是刚才我描述的问题,您难道以前这样添加对话框类,没出现类似问题?
回复:ouyh12345
无法调式,根本无法进入EXT程序,我在以下函数都设置了断点:
CCallXXApp::CCallXXApp()
{
}
CCallXXApp theApp;
BOOL CCallXXApp::InitInstance()
可是程序都没有运行到,谢谢。
piaoying12 2008-03-31
  • 打赏
  • 举报
回复
难道楼主准备剽窃别人的东西??
ouyh12345 2008-03-31
  • 打赏
  • 举报
回复
先调试再说
崩溃的时候,查看堆栈
aoj007aoj 2008-03-31
  • 打赏
  • 举报
回复
回复:ouyh12345
我设置了 debug 菜单下的exception对话框,把 access violation异常的action 改为 stop always ,
但是程序停下的地方,我看不懂,是汇编,我也不知道从哪里来到这里的。
我主要是想将一个现成的MFC 对话框应用程序转换为MFC DLL,不过在往对话框类添加事件时出现这个问题,不添加事件时则不会出现这个问题,请问您有资料给我看吗,谢谢。
小猪瑞比 2008-03-31
  • 打赏
  • 举报
回复
重建一个MFC DLL 工程,把以前的类以及对话框等资源复用一下不就行了?
xkyx_cn 2008-03-31
  • 打赏
  • 举报
回复
非法的指针访问,调用的过程中检查一下
ouyh12345 2008-03-31
  • 打赏
  • 举报
回复
调试呗
以dll工程为主工程,设置外部调用程序、参数、工作路径等

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧