关于Buffer overrun detected!的问题

senkiner 2005-04-08 12:10:45
DLL里面有一个函数Draw(HDC hdc),当我在一个Win32程序里调用这个函数的时候,会出现Buffer overrun detected!的错误,这是怎么回事呀?

//在DLL中的函数如下:
DRAWTEXT_API void MyDrawText(HDC hdc)
{
return;//不管这里怎么写,都会出错,如果在这里向hdc绘画,也会画上去
}
//调用如下:
typedef void (WINAPI *fnDrawText)(HDC hdc);

hLib = LoadLibrary("DrawText.dll");
if(hLib != NULL)
{
MyDrawText = (fnDrawText)GetProcAddress(hLib, "MyDrawText");
}
if(MakeWood)
{
MyDrawText(hdc);
}
...全文
168 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
DentistryDoctor 2005-04-08
  • 打赏
  • 举报
回复
DRAWTEXT_API?
typedef void (WINAPI *fnDrawText)(HDC hdc);?

会不会是调有约定的问题?
senkiner 2005-04-08
  • 打赏
  • 举报
回复
上面有个地方 写错了 , MakeWood 改为 MyDrawText
everandforever 2005-04-08
  • 打赏
  • 举报
回复
typedef void (WINAPI *fnDrawText)(HDC hdc); 改成
typedef void (*fnDrawText)(HDC hdc);
everandforever 2005-04-08
  • 打赏
  • 举报
回复
typedef void (WINAPI *fnDrawText)(HDC hdc); d
typedef void (*fnDrawText)(HDC hdc);
senkiner 2005-04-08
  • 打赏
  • 举报
回复
DRAWTEXT_API是宏,#define DRAWTEXT_API extern "C" __declspec(dllexport),负责将函数导出

调用约定么?应该不是,只要我把 DRAWTEXT_API void MyDrawText(HDC hdc) 换成 DRAWTEXT_API void MyDrawText(void) 就没有任何问题了,
而且 就算是 DRAWTEXT_API void MyDrawText(HDC hdc) 也是可以调用的,只不过把Text画到窗体上后(已经画好了),程序就出现overrun的错误

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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