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);
}
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);
}
typedef void (WINAPI *fnDrawText)(HDC hdc);?会不会是调有约定的问题?
而且 就算是 DRAWTEXT_API void MyDrawText(HDC hdc) 也是可以调用的,只不过把Text画到窗体上后(已经画好了),程序就出现overrun的错误
typedef void (*fnDrawText)(HDC hdc);
typedef void (*fnDrawText)(HDC hdc);