将一个项目创建为库的形式,在大规模的项目中有利于模块化管理和后续的重复使用。下面描述怎样将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文件