c++ - .lib 链接其他 .libs

标签 c++ visual-studio symbols static-linking

目前我的visual studio基本上是在生成Engine.dll和Game.exe

Engine.dll 链接到其他一些基本库,例如: d3dx9d.lib ComCtl32.lib WinMM.lib WSock32.lib 等等

我也想尝试创建一个 Engine.lib,但我现在收到一些非常好的警告:符号 x 已经定义。这些库定义了相同的符号。

所以我在某处读到我必须强制我的用户 (Game.exe) 链接到库。但我认为这真的很不方便,尤其是当我有很多游戏并且我决定向我的引擎添加另一个库时。只是维护这么简单的东西。

我应该坚持使用 .dll,还是有什么方法可以解决这个问题?

非常感谢,

安东

最佳答案

您需要决定是要 DLL 还是静态链接库。 DLL 的优势在于,如果您进行本地更改,构建时间会更快。 .lib 的优点是您最终只会得到一个可部署文件。

获取链接(静态 .lib 或 dll 的导入 .lib)是自动的。您要确保首先构建库,没有它就无法链接 .exe。在Solution Explorer窗口右击exe项目,Project Dependencies,勾选library项目。这会自动将 .lib 添加到 exe 项目的附加依赖项中。

在引擎的头文件中使用#pragma comment(lib, "engine.lib") 是另一种方式。对操作系统导入库等其他依赖项重复上述操作。获得正确的库路径是一个//待办事项。

关于c++ - .lib 链接其他 .libs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4546507/

相关文章:

c++ - 从函数指针输出动态数组

javascript - Asp NET在不同解决方案中共享html组件

c++ - 拷贝构造函数的调用逻辑

c++ - 从 LLVM 添加到 C++ lambda 的映射

C++ 如何加载 .NET 运行时,从而托管 WPF 组件

vb.net - Visual Studio 2010 的 VB.NET 代码编辑器中的方法下拉列表是否有键盘快捷键?

mysql - 如何在mysql数据库中存储欧元符号?

php - 通过PHP在数据库中插入度数符号

macros - Clojure 宏和符号绑定(bind)

c++ - 以下3个opencv Mat实例有什么区别?