将我的 DLL 添加到 C++ 中的 Visual Studio 项目中

Adding my DLL into a Visual Studio project in C++

我正在做一个涉及制作动态 link 库的项目,所以我想在 Visual Studio 的控制台应用程序中测试它。

DLL也是Visual Studio做的,内容不多,就几个功能而已。我不确定我是否应该将库 header 包含在 Propertiesinclude 目录面板中,或者做其他

很多人说我应该在 Library 或 Reference 目录中添加它对应的 .lib 文件,但我不确定 VS 会在 DLL 旁边生成一个 .lib 文件.我正在使用 VS 2015。

此刻我面前没有 VS,但这些应该是设置它的一般步骤:

Properties->Linker->Input: your.lib
Properties->Linker->Additional Library Directories: ../your/bin
Properties->General->Compiler->Additional Include Directories: ../your/include

要构建您的应用程序,DLL 的 API headers 必须在 compile-time 的包含中,它是 link-time 的库中的 LIB 文件。一旦你有了你的应用程序 EXE,你所需要的只是 DLL 在执行时与你的 EXE 位于同一文件夹中。

您可能还想将 dll 项目和应用程序项目添加到 VS 中的通用解决方案中,并将应用程序的项目依赖项添加(右键单击)到 dll。这确保了构建的正确顺序,假设您要构建 dll。

你也可以做我做的。

  1. 您可以在解决方案目录中创建一个 Libs 目录。
  2. 然后您可以将您的 .DLL 文件放在 Libs 目录或 sub-directory Libs

    目录中
    • 在我的例子中,我在其中添加了整个 SFML-2.3.2 目录,其中包括 source-code、.lib 文件和 .dll 文件。
    • 我在项目属性中尽我所能 link,但我使用 Visual Studio 的宏来填充解决方案目录的路径名。以防万一我想把它放在版本控制中并从多台机器上处理它。
  3. 然后我打开了项目的 属性 页面。

  4. 在 属性 页面中,我转到 Build Events -> Post-Build Event -> Command Line
  5. 命令行中,您可以添加一个复制命令,将任何需要的文件复制到与需要它们的可执行文件相同的目录中。
    • 在我的例子中,我使用了:copy "$(SolutionDir)Libs\SFML-2.3.2\bin\*" "$(TargetDir)"
    • 我本可以编写多个命令来只复制我需要的单个文件,但我花了整整三个小时试图让 SFML 工作而没有实际安装它。