//下面是调用
HINSTANCE LibHook;
typedef BOOL (CALLBACK *INSTALLHOOK)( int i ); 
////          ~~~~~~~~要是去掉的话,DBInit函数返回后就会出错
INSTALLHOOK InstallHook;      
LibHook=LoadLibrary("DBControl.DLL");  
InstallHook = ( INSTALLHOOK)GetProcAddress( LibHook,"DBInit");
InstallHook( 1);//下面是dll中写的int __declspec(dllexport)__stdcall DBInit( int i)
{
return TRUE;
}为啥呢?救命啊

解决方案 »

  1.   

    CALLBACK 的定义就是__stdcall
    之类的调用约定……
    涉及到函数参数的传递方式……
    不能缺……
      

  2.   

    和 PASCAL 调用序列有关!?
      

  3.   

    详细好吗?我对函数前面的
    __stdcall
    CALLBACK等等始终不知道怎么回事,只是书上说要加,我就加
      

  4.   

    http://www.csdn.net/expert/topic/1034/1034807.xml?temp=.5400965
    look this~
      

  5.   

    CallBack函数有系统调用,所以必须满足系统对参数的要求,加入callback标示确定函数参数传递方式符合系统调用规定。
      

  6.   

    这是系统调用回调函数时的一种约定而已。
    当你的函数需要系统调用时就声明为回调函数,用CALLBACK标识符,这样系统就能顺利的调用它了!
    这就象是做事的规则一样,至于为什么的那样的,那只能说是以前把它规定成这样的,如果你自己可以设计系统的话,你把它规定成其他也没有什么关系呀,呵呵!