Bootstrap

38. c++创建和使用库

将一个项目创建为库的形式,在大规模的项目中有利于模块化管理和后续的重复使用。下面描述怎样将c++项目创建为库。

38.1 创建库项目

创建一个空c++项目Game,然后在solution中再添加一个新project

创建Engine后,右键properties改变configuration type为静态.lib类型

38.2 使用创建的库

创建库项目Engine后,写入一些code以便功能测试,编译完成后得到lib文件如下:

‘37c++静态库的使用’中描述了使用静态库的方法,先在项目中定义头文件的宏,然后加入lib文件,这里我们需要先加入头文件的宏定义 

 由于Engine与Game在同一个Solution下,因此可以不用额外添加lib文件,直接在Game中引用Engine库即可。右键Game->add->reference,添加Engine

这样与在vs中手动添加 Engine.lib的不同之处在于:

手动添加后,库项目名称更新后,还需要同步更新配置的库名称;如果是动态链接的话,还需要更新dll,替换旧的库;

引用库之后,不用关注库名称的变化,且编译主项目Game时,库也会随之编译更新。

如下编译Game时会同步编译最新的库程序。

执行成功,打印hello world

38.3 补充:生成dll

如果想要生成dll文件,首先设置Engine项目如下:

然后分别在头文件和源文件的函数前加上__declspec(dllexport)

头文件

#pragma once
#include <iostream>
__declspec(dllexport) void printEngine();

源文件

#include <iostream>
#include "Engine.h"
__declspec(dllexport) void printEngine()
{
	std::cout << "hello world" << std::endl;

}

 编译后生成dll和lib文件

 

;