2

我正在使用 Visual Studio 2008 尝试创建一个 .dll。dll 使用外部库 (.lib)。编译和链接工作正常(我在选项中包含了 header/lib 的路径)。当我的 .dll 被程序(作为插件)使用时,它会显示“externalLibrary.dll 丢失”但没有 externalLibrary.dll,只有一个 externalLibrary.lib。

是否有不同的链接选项(所以 externalLibrary 已经在我的 .dll 中了)?或者我可以简单地从 .lib 创建一个 .dll 吗?或者这个问题的任何其他解决方案?

编辑(更具体地说):在我添加的项目属性中

  • 标头路径@C/C++ - 常规 - 附加包含目录
  • 库路径@链接器 - 常规 - 附加库目录
  • 库名称@ Linker - Input - Additional Dependencies(虽然这不会改变任何东西)
4

1 回答 1

1

您使用的 .lib 文件是一个导入库,这基本上意味着它只包含函数/类/...的存根,但不包含实际的实现。该实现在 dll 中。导入库仅对链接器有用,因为它使用它来解析符号。但在运行时,需要实际编译的代码,以便您的应用程序/dll 查找 dll。但是即使你的dll被用作插件,它依赖于其他dll也没有问题。因此,如果您有其他 dll,我建议您这样做。(顺便说一句,'externalLibrary' 是什么?供应商只为您提供导入库而不是 dll 是不正常的)

如果你真的不想使用外部dll,你必须找到'externalLibrary'代码的静态库。与导入库不同,静态库确实包含所有带有实际实现等的符号。因此,在与静态库链接后,您的应用程序/dll 包含代码本身,不需要在运行时解析它。

于 2013-07-12T06:40:35.810 回答