如何在MSVC中静态链接库?

时间:2012-05-11 18:26:08

标签: c++ visual-c++ static-linking pdcurses

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

2 个答案:

答案 0 :(得分:5)

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

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

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

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

答案 1 :(得分:-4)

dll需要在路径中。