出现下种错误,怎么解决?

honey2008 2002-09-09 03:07:09
调用DLL中的函数,出来对话框

unhandled exception in test.exe(MFC42.dll):0xc0000005 access violation.

本人比较菜,请多多指教!
...全文
56 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wzt2000 2002-09-10
  • 打赏
  • 举报
回复
g_pDC很可能没有初始化,这时g_pDC不是NULL,但不能用。
ASSERT(!g_pDC)无效。
everandforever 2002-09-09
  • 打赏
  • 举报
回复
你的g_pDC很可疑。它是怎么来的,初始化了没有?
bobqi 2002-09-09
  • 打赏
  • 举报
回复
你先试一下独立运行c的代码,
也就是将dll里的代码放到一个程序里运行,
看会不会出错,如果有出错跟踪进去贴出来看看
honey2008 2002-09-09
  • 打赏
  • 举报
回复
everandforever(Forever) :
老兄,不会呀,因为FORTRAN我也不会用。
everandforever 2002-09-09
  • 打赏
  • 举报
回复
你用DEBUG模式跟到CDC::MOVETO里面去看一下是哪一行出错,贴出来.
honey2008 2002-09-09
  • 打赏
  • 举报
回复
这是FORTRAN函数:
subroutine CallDrawLine(DrawLine,ix1,iy1,ix2,iy2)
interface
subroutine DrawLine(ix1,iy1,ix2,iy2)
!MS$ ATTRIBUTES DLLIMPORT:: DrawLine
end subroutine
end interface

write(*,*) 'hi'
call DrawLine(ix1,iy1,ix2,iy2)
end subroutine
honey2008 2002-09-09
  • 打赏
  • 举报
回复
这是VC++产生DLL的代码,基于MFC的:


extern "C" void __stdcall DrawLine(int x1,int y1,int x2,int y2)
{
CComDLLEx* pDLL = new CComDLLEx();
pDLL->Init();
ASSERT(!g_pDC);
printf("\n%s%i\t%i\t%i\t%i \n","从FORTRAN接收到的数据:\t",x1,y1,x2,y2);
g_pDC->MoveTo(20,10);
g_pDC->LineTo(100,100);
}
在 g_pDC->MoveTo(20,10);行蹦出来错。


这是FORTRAN代码:

PROGRAM fmain
USE msfwin
IMPLICIT NONE


CHARACTER * 40 DLLNAME
INTEGER DLLHANDLE,PROCADDRESS

DATA DLLNAME/'comdllEx.DLL'C/

DLLHANDLE = LoadLibrary(DLLNAME)

procaddress = GetProcAddress(dllhandle,'_DrawLine@16'C)
call CallDrawLine(procaddress,10,10,50,50)
!FreeLibrary(DLLHandle)
write(*,*) '结束!'
END
antshome 2002-09-09
  • 打赏
  • 举报
回复
代码贴上来看看

16,472

社区成员

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

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

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