如何在MSVC中静态链接库?

Fer*_*llo 0 c++ pdcurses static-linking visual-c++

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

0xC*_*22L 5

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

  1. 一个静态库
  2. 一个导入库

前者可用于使您的应用程序知道DLL中的导出入口点,然后将其写入PE文件的导入目录(或延迟加载导入的另一个类似位置).

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

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