.H文件的声名如下:
#ifdef GRAPHICSSYSTEM_BUILD
#undef GRAPHICSSYSTEMAPI
#define GRAPHICSSYSTEMAPI __declspec(dllexport)
#endif#ifdef GRAPHICSSYSTEM_USE
#undef GRAPHICSSYSTEMAPI
#define GRAPHICSSYSTEMAPI __declspec(dllimport)
#endifGRAPHICSSYSTEMAPI void  EurekaSendMsg( UINT uMsg, WPARAM wParam, LPARAM lParam );
.cpp实现如下:
void EurekaSendMsg(UINT uMsg,WPARAM wParam,LPARAM lParam)
{
SendMessage( g_pWnd->GetSafeHwnd(),uMsg,wParam,lParam);
}当主程序调用EurekaSendMsg时就会出现:
The value of ESP was not properly saved across a functon call . This is usually a result of calling a function declared with one calling convention with a function pointer declared with a diffent calling
convention.
但在DEBUG模式下忽略程序仍可以继续运行,请问这是为什么?  

解决方案 »

  1.   

    calling convention不一致的问题,加上_stdcall试试
      

  2.   

    调用约定~?
    加个__stdcall或者WINAPI试试~
      

  3.   

    这是调用转换的问题,可以使用__cdecl作为修释符。
      

  4.   

    加上extern "C"说明为C风格编译
    不加的话为C++风格
      

  5.   

    解决了,谢谢rivershan(笨猫)(C++/MFC/COM初学者),也谢谢大家!
    怎么给分啊,我不会,请rivershan(笨猫)(C++/MFC/COM初学者)告诉我哦