C++ 创建库并使用

OrzMiku / 2023-08-20 / 原文

创建库并使用

!> 使用Visual Studio 2022

创建项目和解决方案

首先创建一个空项目,这里叫 Game,同时Visual Studio会帮你创建解决方案。这个项目是我们的应用程序。

创建项目来存库

!> 以静态库为例、

右键解决方案,添加新项目 Engine

此时就有了两个项目, GameEngine

打开 Engine 项目的属性,将配置类型改为静态库(注意上面的平台设置)。

写库文件

我们需要一个头文件和对应的cpp文件。我这样创建了目录(当然目录结构由你设计,这个无所谓):

Engine:
	- includes
		- Engine.h
	- Engine.cpp

打开 Engine.h ,设计一个sayHello函数来打印HelloWorld。注意,头文件中只声明函数,不定义具体功能。

#pragma once

namespace engine {

	// Print HelloWorld
	void sayHello();

}

打开 Engine.cpp,实现头文件中的功能(注意导入头文件哦)。

#include "includes/Engine.h"
#include <iostream>

namespace engine {

	// Print HelloWorld
	void sayHello() {
		std::cout << "HelloWorld!" << std::endl;
	}

}

这个库就写这么多东西,然后我们在应用程序中调用。

链接库

设置Include路径

首先需要头文件,打开项目属性,配置属性 > C/C++ > 常规 > 附加包含目录, 输入$(SolutionDir)Engine\includes

!> 如果这里没有C/C++选项,请先在项目中创建一个C++文件

这里的$(SolutionDir)表示解决方案目录,如果你放在了其他地方,注意修改路径。尽量避免使用绝对路径。

然后这个时候,在项目中引入头文件就行。

引用库文件

这里右键Game项目,选生成依赖项项目依赖项,勾选Engine

在上个文章中,我说到设置库路径,打开项目属性,配置属性 > 链接器 > 输入 > 附加依赖项,添加glfw3.lib ,这里不这样做,是因为如果我们在vs中改了库的名字,我们还需要去项目属性中重新修改依赖项。如果按上面这样设置,那么一切都是自动的,vs会帮我们做好这些工作。

尝试调用库中的函数

我们打开Game中的Application.cpp,开始写代码:

#include "Engine.h"

int main() {
	engine::sayHello();
	return 0;
}

运行后成功打印HelloWorld。