如何在 MSVC 中静态链接库

How to statically link a library in MSVC?

本文关键字:静态 链接 MSVC      更新时间:2023-10-16

我正在Visual C++ 10 Microsoft编译我的程序,它使用PDCurses库。我已经将其配置为链接到 pdcurses.lib,但是当我尝试运行该应用程序时,系统抱怨它找不到"pdcurses.dll"。它不应该抱怨它。我曾经使用 MinGW (GCC( 编译程序,当我尝试运行应用程序时,它不会询问我任何 DLL。我该怎么做才能使 MSVC 静态链接 PDCurses?

在 MSVC 中,.lib文件可以采用两种形式:

  1. 静态库
  2. 导入库
前者可用于

使应用程序知道从 DLL 导出的入口点,然后将其写入 PE 文件的导入目录(或写入延迟加载导入的另一个类似位置(。

但是,后者实际上会将它包含的每个引用函数的代码链接到最终的二进制文件中。这是您想要的,但是如果要链接的库的版本未提供该静态库,则可能必须从源代码自己构建该静态库。

但是,还有另一种可能性:您可能只是传递了错误的目录,以便链接器查找.lib文件。在这种情况下,您将链接到导入库而不是静态库。请确保检查生成日志中所使用的路径。但是,这仅适用于库的分发包含两种类型的库的情况。

dll 需要位于路径中。