首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >链接其他.libs的.lib

链接其他.libs的.lib
EN

Stack Overflow用户
提问于 2010-12-28 21:45:57
回答 3查看 348关注 0票数 0

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

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

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

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

我应该坚持使用.dll,或者有什么方法可以修复这个美丽的东西?

非常感谢,

Antoon

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-12-28 21:54:07

您是否创建了不同的名称空间以避免命名冲突?

编辑--似乎对您要问的问题有些困惑,因为您问了几个问题。

在我看来,您似乎想尝试实现自己的引擎类。然而,你有命名的问题。我现在更多地将其视为一个架构问题。如果你把你的游戏写到一个接口上,那么这个问题就会消失。例如,如果您的引擎使用不同的算法,那么如果您已经编写了当前引擎和YourEngine实现的EngineInterface,那么您可以很容易地使用策略在不同的实现之间动态切换。这很好,因为如果您将首选项连接到应用程序中,您将能够看到游戏中的差异。

票数 1
EN

Stack Overflow用户

发布于 2010-12-28 22:02:36

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

链接它(静态.lib或dll的导入.lib)是自动的。你想要确保首先构建这个库,没有它就不能链接.exe。右击“解决方案资源管理器”窗口中的“项目依赖项”中的exe项目,勾选该库项目。这会自动将.lib添加到exe项目的其他依赖项中。

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

票数 2
EN

Stack Overflow用户

发布于 2010-12-28 21:58:25

如果符号不应该是相同的,请使用不同的名称或控制它们的公开方式。另一种选择是使用名称空间来避免命名冲突。

如果这两个符号应该是同一个东西,那么你只需要在其中一个库中定义一次。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4546507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档