依赖于其他静态库的静态库
Static library that depends on other static libraries
我正在写一个游戏,同时为它和我将来可能制作的其他游戏构建一个引擎。在测试期间,游戏逻辑和引擎(分别)运行良好。但是,当我尝试将它们链接在一起时,我在包含头文件时遇到了一些问题。
具体来说,这是我所做的:
该引擎构建为静态库(.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 静态库合并为一个
相关文章:
- 使用 CMake 与其他静态库链接的静态库 - 一个有效,一个无效。为什么?
- 访问从 CPP 文件到其他头文件的静态变量
- 如何将 cpp 文件中的静态函数公开给其他文件
- 在这种情况下,我们可以使用静态而不是朋友吗,还有其他解决方案是什么
- 将函数的引用设置为其他 c++ 文件中的非静态函数
- 当其他链接库链接 stdc++ 为动态时,如何将 libstdc++ 链接设置为静态?
- 与其他静态const成员初始化静态常量成员
- 如何将GCC中的静态库与其他动态库链接
- 如何添加其他CMAKE模块的静态LIB
- 如何在任何其他全局变量或静态变量之前创建/构造类实例
- 如何链接一个使用其他库的静态C库
- Cmake:制作静态库并在其他项目中使用
- 依赖于其他静态库的静态库
- 未解决的外部符号 - 来自其他项目的静态函数
- buildroot:仅构建一个包裹作为共享和静态lib,所有其他包装仅共享
- 其他静态阵列破坏了OMAPL138目标(CCS5.2)上的DSP应用程序
- Visual Studio生成的静态库最大文件大小或其他限制
- 与其他库链接的静态库-LINKER警告
- C 代码 - 覆盖率(或其他静态代码分析仪) 线程安全
- SFML 不静态链接到 openal32(静态链接到所有其他依赖项)