动态调用DLL函数总是失败
heaoo 2007-03-24 10:56:28 //************mymath.h********************************
#ifndef _MATH_H_
#define _MATH_H_
#ifdef __cplusplus
#define EXPORT extern "C" __declspec(dllexport)
#else
#define EXPORT __declspec(dllexport)
#endif
#define DLLENTRY WINAPI
EXPORT int CALLBACK sub(int,int);
EXPORT int CALLBACK add(int,int);
EXPORT int CALLBACK mut(int,int);
#endif
//****************mymath.cpp**********************************
#include<windows.h>
#include"math.h"
int DLLENTRY DllMain(HINSTANCE hInstance,DWORD fdwReason,PVOID pvReserved)
{
return TRUE;
}
EXPORT int CALLBACK sub(int x,int y)
{
return x-y;
}
EXPORT int CALLBACK add(int x,int y)
{
return x+y;
}
EXPORT int CALLBACK mut(int x,int y)
{
return x*y;
}
//**************main.cpp*******************************************
#include "windows.h"
typedef int ( CALLBACK * PFUN)(int,int);
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
{
HINSTANCE hDll;
PFUN psub;
hDll=LoadLibrary("mymath.dll");
//测试加载mymath.dll是否成功
if(hDll==NULL)
{
MessageBox(NULL,TEXT("Fail to load math.dll "),TEXT("ERROR"),MB_OK|MB_ICONWARNING);
return 0;
}
psub=PFUN(GetProcAddress(hDll,"sub"));
//测试取得函数sub地址是否成功(总是在这儿失败)
if(psub==NULL)
{
MessageBox(NULL,TEXT("Fail to load function sub "),TEXT("ERROR"),MB_OK|MB_ICONWARNING);
return 0;
}
return 0;
}
上面程序中,psub总是等于NULL,为什么不能成功调用函数sub?