1、VS2003新建DLL项目dllTest
2、项目dllTest中添加脚本lib.h,代码如下:
1 //lib.h 2 #ifndef LIB_H 3 #define LIB_H 4 extern "C" int add(int x,int y); 5 extern "C" int mius(int x,int y); 6 #endif
3、项目dllTest中添加脚本lib.cpp,代码如下:
1 //lib.cpp 2 #include "lib.h" 3 int add(int x,int y) 4 { 5 return x + y; 6 } 7 int mius(int x,int y) 8 { 9 return x - y; 10 }
4、项目dllTest中添加脚本lib.def,代码如下:
1 LIBRARY dllTest 2 EXPORTS 3 add @ 1 4 mius @ 2
5、build生成libTest.lib及libTest.dll
6、添加检测项目dllCall
7、添加主程序脚本dllCall.cpp,代码如下:
特别说明:与静态DLL模板中对比就会发现,此处并没用引用dllTest的头文件lib.h,同时声明与动态声明也有些不同,但却是静态引用。关键是dllTest项目中lib.def导出接口模块定义所致。同时因为是静态引用就需要所加载的dllTest.dll文件必须在当前目录下!
1 #include "stdafx.h" 2 #include "windows.h" 3 4 #pragma comment(lib,"..\Debug\dllTest.lib") 5 //在link时,应链接dllTest.lib文件 6 //Lib库中仅仅是关于其对应DLL文件中函数的重定位信息 7 extern "C" _declspec(dllimport) add(int x,int y); 8 extern "C" _declspec(dllimport) mius(int x,int y); 9 10 int main(int argc, char* argv[]) 11 { 12 printf("2 + 3 = %d ",add(2,3)); 13 printf("2 - 3 = %d ",mius(2,3)); 14 15 return 0; 16 }
8、Ctrl+F5调试运行后,如图: