123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- // dlltest3.cpp : 定义控制台应用程序的入口点。
- //
- #include "stdafx.h"
- #include <Windows.h>
- // 显示调用dll:dll;
- // 只需要dll;
- int _tmain(int argc, _TCHAR* argv[])
- {
- // 1.定义导出函数的函数指针;
- typedef int (*API_ADD)(int a,int b); // 缺省调用约定:__cdecl(项目本身调用约定),否则要指定__stdcall,如: typedef int (__stdcall *API_ADD)(int a,int b);
- // 2.加载dll文件;
- HMODULE mydll = LoadLibraryA("win32dll.dll");
- if ( mydll != NULL )
- {
- // 3.声明函数指针变量,并获取导出函数;
- API_ADD padd = (API_ADD)GetProcAddress(mydll, "add");//GetProcAddress(mydll, MAKEINTRESOURCE(1));
- API_ADD padd2 = (API_ADD)GetProcAddress(mydll, "add2");//GetProcAddress(mydll, MAKEINTRESOURCE(1));
- // ??如何导出全局变量??
- int *presult = (int*)GetProcAddress(mydll, "g_result");//GetProcAddress(mydll, MAKEINTRESOURCE(1));
- if ( padd != NULL && padd2 != NULL)
- {
- // 4.调用导出函数;
- printf("%d\n",padd(9,9));
- *presult = 30;
- printf("%d\n",padd2(9,9));
- }
- else
- {
- printf("加载dll函数出错\n");
- }
- // 释放dll;
- FreeLibrary(mydll);
- mydll = NULL;
- padd = NULL;
- padd2 = NULL;
- }
- getchar();
- return 0;
- }
|