1.制做dll文件 vs2008中,File > New Project > Other Language > Win32 > Win32 Console Application. 输入项目名称:MyDll。点击【OK】,【Next】,选择dll单选按钮,完成。 vs2008会自动生成一些代码,不用管它。建立MyDll.h,代码以下 MyDll.h 为了提升可用性,写了可回带值的函数供参考 Cpp代码 收藏代码 //MyDLL.h extern "C" _declspec(dllexport) int Max(int a, int b); extern "C" _declspec(dllexport) int Min(int a, int b); extern "C" _declspec(dllexport) bool cim2scada(char* cimId, char** scadaId); 建立MyDll.cpp Cpp代码 收藏代码 // MyDll.cpp : Defines the exported functions for the DLL application. // #include "stdafx.h" #include"MyDll.h" #include <iostream> int Max(int a, int b) { if(a>=b)return a; else return b; } int Min(int a, int b) { if(a>=b)return b; else return a; } bool cim2scada(char* cimId, char** scadaId){ char *result; if(cimId == NULL){ printf("空指针!"); return false; }else if(strlen(cimId) == 0){ printf("cimId无值!"); return false; } if(strcmp(cimId, "aaaaaa") == 0){ result = "1000"; }else if(strcmp(cimId, "bbbbbb") == 0){ result = "2000"; } *scadaId = result; printf("fun scadaId:%s\n", *scadaId); return true; } 编译一下,到工程的DEBUG目录,就能够找到MyDll.dll文件 2.建立测试程序 vs2008中,File > New Project > Other Language > Win32 > Win32 Console Application. 输入项目名称:DllTest。点击【OK】,【Next】,选择console单选按钮,去掉“预编译头”默认勾选项,完成。 Cpp代码 收藏代码 #include "windows.h" #include <iostream> void main(){ typedef int(*pMax)(int a, int b); typedef int(*pMin)(int a, int b); typedef bool(*pcim2scada)(char* cimid, char** scada); HINSTANCE HDLL; HDLL=LoadLibrary(L"MyDll.dll");//加载动态连接库MyDll.dll文件; pMax Max=(pMax)GetProcAddress(HDLL,"Max"); pMin Min=(pMin)GetProcAddress(HDLL,"Min"); pcim2scada cim2scada=(pcim2scada)GetProcAddress(HDLL,"cim2scada"); int a = Max(5, 12); char cimId[] = "aaaaaa"; char * scadaId = ""; bool b = cim2scada(cimId, &scadaId); printf("Max结果为%d",a); printf("cimId:%s, scadaId:%s", cimId, scadaId); FreeLibrary(HDLL);//卸载MyDll.dll文件; } 编译一下 拷贝MyDll.dll文件到DllTest项目的Debug目录下 打开一个控制台(cmd),进入DllTest > Debug目录,运行DllTest.exe 输出结果: Cpp代码 收藏代码 fun scadaId : 1000 Max结果为12 cimId:aaaaaa, scadaId:1000 ===================================================================================================== 这里总结一下vs2008下建立dll并使用dll导出函数的方法,固然方法还有不少,找出一个本身比较习惯的方法就好! 一:生成DLL 1:建立DLL工程 文件->新建->项目->visual c++->win32->win32控制台应用程序(win32项目也能够) 填写项目名称MyDLL->肯定->下一步->DLL(附加选项 对空项目打钩)->完成。 到这里DLL工程就建立完毕了,下面新建两个文件MyDLL.cpp和MyDLL.h。 MyDLL.cpp内容以下: #include <iostream> using namespace std; #include "MyDLL.h" int Add(int &a,int &b) { return a+b; } MyDLL.h内容以下: #pragma once #define DLL_EXPORT __declspec(dllexport) extern "C" DLL_EXPORT int Add(int &a,int &b); 点击生成,则dll文件就生成了,vs2008不能直接生成lib文件,这个时候就须要咱们在创建dll工程的时候 再新建一个def文件,默认生成而后从新生成就可以获得lib文件了 2:调用DLL文件导出的接口函数 vs2008这个IDE很是好用,咱们这里玩一下,在上面建立的DLL工程中,再新建一个项目来直接调用DLL导出函数。 右键解决方案->添加->新建项目->创建一个空的常规工程 testMyDLL,下面新建两个文件testMyDLL.cpp和testMyDLL.h testMyDLL.cpp内容以下: #include "testMyDLL.h" #pragma comment(lib,"..\\debug\\MyDLL.lib") #include <iostream> using namespace std; int main() { int a =3; int b =2; cout<<Add(a,b)<<endl; getchar(); } testMyDLL.h内容以下: #pragma once #define DLL_EXPORT __declspec(dllexport) extern "C" DLL_EXPORT int Add(int &a,int &b); 这里须要注意testMyDLL.cpp文件中调用lib的这句话: #pragma comment(lib,"..\\debug\\MyDLL.lib") 这里须要指明lib所在的文件夹,固然咱们也能够在生成dll的MyDLL工程中,指定lib和dll文件的输出路径,直接到testMyDLL工程下。 注:dll文件的操做有不少方法,待之后丰富。。。