依赖于其他静态库的静态库

Static library that depends on other static libraries

本文关键字:静态 其他 依赖于      更新时间:2023-10-16

我正在写一个游戏,同时为它和我将来可能制作的其他游戏构建一个引擎。在测试期间,游戏逻辑和引擎(分别)运行良好。但是,当我尝试将它们链接在一起时,我在包含头文件时遇到了一些问题。

具体来说,这是我所做的:

该引擎构建为静态库(.lib),并依赖于GLFW静态库(glfw3.lib)。它包含一个 Window.h 文件:

// Window.h
#pragma once
#include <glfw3.h> // include other library's header
#include <iostream>
//test if the linking success
void test() {
std::cout << "this is Window.h";
}    
class Window
{
// Window class code (declaration, function prototype, etc...)
}

*请注意,GLFW库的位置与引擎/游戏项目的位置是分开的。

游戏项目与引擎项目托管在同一解决方案下。在游戏的属性中,我添加了引擎作为依赖项以及引擎的 .lib 并包含位置。然后我尝试以下操作:

// game's main file
#include <Window.h> 
void main()
{
test(); // call the test function from Window.h
}

在构建游戏时,我收到一个错误,说它找不到名为"glfw3.h"的文件。但是,如果我注释掉 Window.h 文件中包含的 glfw3.h:

# Window.h
#pragma once
//#include <glfw3.h>

然后游戏构建并正常运行,并在测试功能中打印出测试行。

我想将引擎构建为单个.lib,其中包含为其类原型功能的头文件;因此在游戏项目中,我只需要包含/依赖引擎库,而无需关心GLFW之类的。我怎样才能实现呢? 我发现了一个类似的问题,但似乎答案并不能解决我的问题。

您可以尝试下面相关帖子中的建议。基本上,像您正在做的那样构建您的库,然后将其与 glfw 静态库静态合并。

如何将两个 windows vc 静态库合并为一个