一、创建dll文件:
1、打开VS2010,新建Win32项目,如下图所示:
2、应用程序类型,选取DLL
3、添加新类 DigitalProc,在头文件 DigitalProc.h中添加如下代码:
#ifndef DIGITALPROCl_H_ #define DIGITALPROCl_H_ #ifdef DIGITALDLL #define DIGITALDLL extern "C" _declspec(dllimport) #else #define DIGITALDLL extern "C" _declspec(dllexport) #endif DIGITALDLL int Add(int num1, int num2); DIGITALDLL int Minus(int num1, int num2); DIGITALDLL int Max(int num1, int num2); DIGITALDLL int Min(int num1, int num2); #endif4、在 DigitalProc。cpp中添加如下代码:
#include "stdafx.h" int Add(int num1, int num2) { return num1 + num2; } int Minus(int num1, int num2) { return num1 - num2; } int Max(int num1, int num2) { return num1 > num2 ? num1 : num2; } int Min(int num1, int num2) { return num1 < num2 ? num1 : num2; } 5、新建模块定义文件,如下图所示:在该文件中添加如下代码:
LIBRARY "DigitalOpera" EXPORTS Add @1 Minus @2 Max @3 Min @46、编译(会提示无法启动程序...dll,但无关紧要,文件已成功生成),生成dll和lib文件,如下图所示:
一、调用dll文件:
1、新建一个控制台程序,将DigitalOpera.dll添加到该项目的Debug目录下;
2、在主文件中添加如下代码:
#include "stdafx.h" #include <Windows.h> #include <iostream> using namespace std; typedef int (*lpAddFunc)(int, int); typedef int (*lpMinusFunc)(int, int); typedef int (*lpMaxFunc)(int, int); typedef int (*lpMinFunc)(int, int); int _tmain(int argc, _TCHAR* argv[]) { lpAddFunc addFunc; lpMinusFunc minusFunc; lpMaxFunc maxFunc; lpMinFunc minFunc; HINSTANCE hDll; hDll = LoadLibrary("..\\Debug\\DigitalOpera.dll"); if (hDll != NULL) { addFunc = (lpAddFunc)GetProcAddress(hDll, "Add"); minusFunc = (lpMinusFunc)GetProcAddress(hDll, "Minus"); maxFunc = (lpMaxFunc)GetProcAddress(hDll, "Max"); minFunc = (lpMinFunc)GetProcAddress(hDll, "Min"); if (addFunc != NULL) { cout << addFunc(12, 35) << endl; cout << minusFunc(12, 35) << endl; cout << maxFunc(12, 35) << endl; cout << minFunc(12, 35) << endl; } } return 0; } 3、运行结果如下:至此,有关dll的创建和调用过程已简单的阐述完毕。
