(1)新建项目--->win32控制台应用程序,输入项目名称,例如“dllTest”,点击确定;
(2)点击下一步:
(3)在出现的应用程序设置中,选择DLL(默认为控制台应用程序),如图所示:
(4)点击完成,之后,就可以写你的库接口代码了。
(5)这个时候,你会发现项目中出现了一个dllTest.cpp的文件,该文件的第一条语句,是这样的:#include "stdafx.h"。Stdafx.h是visual studio的预编译头文件,主要是为了加快编译的速度。为了让代码有更好的跨平台编译能力,我建议去除该选项。Stdafx.h预编译选项的去除是这样的,依次点击:dllTest(即,当前项目)-->属性-->c/c++-->预编译头, 如下图所示:
或许,你已经发现了,“创建/使用预编译头”的属性为“使用预编译头(/Yu)”,这里,只需用将该属性修改为"不使用预编译头"即可。如下图所示:
之后,点击“应用”,“确定”。这样,你就取消了VS2008默认的预编译选项。
(6)接着,我们来定义接口。在这里,我打算定义一个类CDllTest,该类只有一个函数,int Sum(int a, int b);完成加法运算。参考代码如下所示:
- dllTest.h
- #ifndef DLL_TEST_H
- #define DLL_TEST_H
- #ifndef DLL_API
- #define DLL_API _declspec(dllexport)
- //#else
- //#define DLL_API _declspec(dllimport)
- #endif
- class DLL_API CDllTest
- {
- public:
- CDllTest();
- ~CDllTest();
- int Sum(int a, int b);
- };
- #endif
- dllTest.cpp
- #include "dllTest.h"
- int CDllTest::Sum(int a, int b)
- {
- int val = a+b;
- return val;
- }
- CDllTest::CDllTest()
- {
- }
- CDllTest::~CDllTest()
- {
- }
(7)代码写完了,接着就是编译了,选择debug模式或者release模式都可以。不过,如果是要发布,最好选择release模式。需要提醒的是,vs2008默认是生成.dll文件,也就是所谓的动态链接库(dll, dynamic link library)。如果你需要编译静态链接库,只需要设置一下,重新编译就可以了。设置方法是:项目-->属性-->常规, 这里,将配置类型从动态库(.dll)改为静态库(.lib)即可
默认为动态库:
修改为动态库:
修改之后,重新编译,就生成了dllTest.lib这个静态库文件了。
(8)接下来,我们再建立一个win32控制台应用程序,来验证刚才生成的lib静态库是否可以正常工作。首先,建立一个名为TestForDllTest的工程,然后,依次选择,项目-->属性-->链接器-->输入, 在其中的附加依赖项属性中,填入dllTest.lib,如下图所示:
(9)点击确定,之后,把刚才dllTest工程中生成的dllTest.libl和dllTest.h(如果刚才生成的是动态库,就需要将dllTest.lib,dllTest.dll,dllTest.h三个都拷贝过去)文件拷贝到当前目录。这样,你就可以测试刚才生成的那个dllTest.lib是否可以正常运行了。这里不妨给出一个参考测试程序:
- #include "stdafx.h"
- #include "dllTest.h"
- #include "iostream"
- using namespace std;
- int _tmain(int argc, _TCHAR* argv[])
- {
- CDllTest dt;
- int res = dt.Sum(1, 2);
- cout<<"res: "<<res<<endl;
- system("pause");
- return 0;
- }