VS2008中生成lib和dll库文件

(1)新建项目--->win32控制台应用程序,输入项目名称,例如“dllTest”,点击确定;

(2)点击下一步:

(3)在出现的应用程序设置中,选择DLL(默认为控制台应用程序),如图所示:

(4)点击完成,之后,就可以写你的库接口代码了。

(5)这个时候,你会发现项目中出现了一个dllTest.cpp的文件,该文件的第一条语句,是这样的:#include "stdafx.h"。Stdafx.hvisual 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.libldllTest.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: "<


 

你可能感兴趣的:(C++)