1

这个问题似乎很明显,但我遇到了很多麻烦,经过大量搜索后,我最终不得不在这里发帖。

我目前打开了两个 Visual Studio 窗口。一个是导出一个类的 Win32 Console->DLL 项目,在输出目录中我有:

  • .dll 文件
  • .exp 文件
  • .pdb 文件
  • .lib 文件

我已将 DLL 文件放入我的另一个项目的输出目录中,就像我对所有 DLL 所做的那样,这通常可以正常工作。然后,我将该目录添加到链接器的库目录中。

但与我使用的大多数库不同,我认为我做错了什么或者我误解了它是如何工作的,我没有 .h[pp] 文件,所以我不知道应该如何将这些函数包含到我的代码中。我宁愿没有仅限 Windows 的黑客(我想将其限制在 DL​​L 项目中,以便可以轻松移植)。

谁能告诉我我做错了什么?

4

3 回答 3

1

将 .h 文件提供给其他项目并没有什么特别的“hacky”或“windows”。您的 .lib 文件将提供完成构建所需的信息。请参阅:如何在 Visual Studio C++ 中使用第三方 dll?

于 2012-12-13T19:42:05.950 回答
0

你有没有将.dll对应的.lib文件添加到其他项目的目录中?

链接器使用的是 .lib 文件,而不是 DLL(加载程序在运行时使用)。

于 2012-12-13T19:40:03.827 回答
0

.dll 是一个共享库,而不是静态库(Windows 上的 .lib)。

编译项目时必须始终链接静态库,您可以使用头文件 (.h/.hpp) 轻松调用它们的函数,而共享库有两种选择:

  • 静态链接(在编译时,但实现方式与静态库不同)
  • 动态链接(在运行时)

我建议您阅读这篇深入的文章: http: //www.codeproject.com/Articles/85391/Microsoft-Visual-C-Static-and-Dynamic-Libraries

另见维基百科文章:https ://en.wikipedia.org/wiki/Dynamic-link_library

于 2012-12-13T19:47:47.403 回答