typedef bool(__stdcall CHANGE)(char *,char *); 用来定义函数指针,然后可以声明函数指针,例如 CHANGE *pFun。但这么定义巨多: typedef bool(__stdcall *CHANGE)(char *,char *); 作用是用于动态加载DLL的函数:微软的例子:// A simple program that uses LoadLibrary and // GetProcAddress to access myPuts from Myputs.dll.
再CHANGE=(CHANGE)GetProcAddress(hMoudle,"a");然后就可以用CHANGE来调用这个函数a了。
用来定义函数指针,然后可以声明函数指针,例如 CHANGE *pFun。但这么定义巨多:
typedef bool(__stdcall *CHANGE)(char *,char *); 作用是用于动态加载DLL的函数:微软的例子:// A simple program that uses LoadLibrary and
// GetProcAddress to access myPuts from Myputs.dll.
#include <stdio.h>
#include <windows.h>
typedef int (*MYPROC)(LPTSTR);
VOID main(VOID)
{
HINSTANCE hinstLib;
MYPROC ProcAdd;
BOOL fFreeResult, fRunTimeLinkSuccess = FALSE;
// Get a handle to the DLL module.
hinstLib = LoadLibrary(TEXT("myputs"));
// If the handle is valid, try to get the function address.
if (hinstLib != NULL)
{
ProcAdd = (MYPROC) GetProcAddress(hinstLib, TEXT("myPuts"));
// If the function address is valid, call the function.
if (NULL != ProcAdd)
{
fRunTimeLinkSuccess = TRUE;
(ProcAdd) (TEXT("Message via DLL function\n"));
}
// Free the DLL module.
fFreeResult = FreeLibrary(hinstLib);
}
// If unable to call the DLL function, use an alternative.
if (! fRunTimeLinkSuccess)
printf("Message via alternative method\n");
}
那为什么要用个“__stdcall ”在CHANGE前?这又是什么含义那?请给与指教!谢谢!
如果过程所在的 DLL 不是操作系统的一部分,必须先确定它的正确声明形式。帮助主题“声明 DLL 过程”中详尽地解释了 Declare 语句的语法。注意 如果使用 Visual C++ (或类似工具)创建将要由 Visual Basic 调用的 DLL ,则请使用 __stdcall 调用约定。不要使用缺省的调用约定(_cdecl)。
多谢各位帮助!!!还请各位以后多帮忙!!!现在就结贴!!!给分!接分了各位!!