【问题标题】:C++ Using native dlls in the C++ projectC++ 在 C++ 项目中使用本机 dll
【发布时间】:2015-08-13 05:00:00
【问题描述】:

我认为这应该很简单,但我遇到了一堆链接器错误,如下所示:

错误 1 ​​错误 LNK1104: 无法打开文件 '...\Debug\Utils.lib' ...\LINK

Utils 是我想保留为 DLL 的 C++ 项目之一。

如果我将 Configuration Properties->Configuration Type 更改为 Static Library(.lib) 一切都会编译并运行良好,但如果我使用.dll 然后它不起作用。

整个解决方案是原生 C++,主项目是一个 win32 控制台应用程序。

【问题讨论】:

    标签: c++


    【解决方案1】:

    也许您的库 (Utils.lib) 没有组装为 DLL,并且控制台应用程序项目(使用库)中的更改将无济于事。 仔细阅读MSDN,了解 DLL 创建和使用的特点。

    【讨论】:

      【解决方案2】:

      如果您尝试将 .lib 与另一个 .lib 链接,它并没有真正链接。相反,这会指示最终链接使用这两个库。

      对于 DLL,这是行不通的,因为运行时链接器无法链接原始 .LIB。这意味着链接必须在编译 DLL 时发生。

      因此,DLL 项目需要正确设置 .LIB 目录。

      【讨论】:

      • 虽然我没有使用任何库...为简单起见,我创建了一个新的空 Win32 项目,该项目构建为 .exe。在同一个解决方案中,我创建了另一个构建为 .dll 的 Win32 项目。现在我在我的 .exe 项目中添加对 .dll 项目的引用并收到 LNK1104: cannot open file ..\TestDLL.lib' 错误。我做错了什么?
      • @MichaelNaumov:“不使用任何库”?如果要在运行时使用 DLL,编译器必须知道 DLL 中有哪些函数。这是通过静态链接到该 DLL 的 import 库 来实现的,它是一个小的 .LIB。
      猜你喜欢
      • 1970-01-01
      • 2017-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-19
      • 2014-12-31
      相关资源
      最近更新 更多