【问题标题】:How to reference a (Dynamic Lib) DLL in a Visual Studio 2012 C++ project?如何在 Visual Studio 2012 C++ 项目中引用(动态库)DLL?
【发布时间】:2012-10-16 02:13:50
【问题描述】:

我制作了一个带有已编译头文件的动态库并编译了一个 DLL(使用 Visual Studio 2012)。

我还有一个使用 Visual Studio 2012 制作的 C++ 项目,我想引用之前生成的 DLL。

如何在我的 Visual Studio 2012 C++ 项目中引用该(动态库)DLL?如果我想使用库的功能,是否还需要指向头文件(.h)?

【问题讨论】:

    标签: c++ visual-studio-2012


    【解决方案1】:

    我发现使用项目属性对话框中的 Framework and References 项来引用 DLL 项目最简单:

    看起来您在 C++ 本地代码中添加了一些奇怪的 .Net 内容,但这也是本地代码项目引用另一个项目的最简单方法。

    如果您想调用该 DLL 中的函数,那么是的,您可能希望包含该 DLL 的头文件。

    【讨论】:

    • 此解决方案仅适用于在相同桌面环境中创建 DLL 的情况。如果你只有 DLL 和头文件(不是 VS 解决方案),那就没用了。
    • 我可能遇到了 PhilMacKay 所写的问题。可悲的是,“它没用”并不能帮助我弄清楚该怎么做。
    【解决方案2】:

    您可以在此处查看文档:http://msdn.microsoft.com/en-us/library/ms235636(v=vs.80).aspx(创建和使用动态链接库)

    【讨论】:

      【解决方案3】:

      有几种方法可以做到这一点,但都有一个共同点,您需要在项目中包含标头,以便知道函数,因为 C++ 没有反射。

      1. 您可以跳过静态链接并使用 LoadLibrary 加载 dll 并使用 GetProcAddress 获取函数,这样做的好处是您可以使 DLL 成为可选。如果它不存在,您可以避免调用它或提供一些用户友好的错误消息。

      2. 您可以静态链接到 dll,这意味着将 dll 的 .lib 文件添加到您的项目中,有几种方法可以做到这一点,老派的方法是在解决方案的属性中添加它/linker/input/additional dependencies 然后确保 dll 在 exe 搜索路径中。如果找不到,您将收到一条错误消息。

      【讨论】:

      • 我也可以使用#pragma comment(lib, "ws2_32.lib") liek 语法来实现这一点吗?
      • 还有哪些其他方法可以直接链接 DLL? LoadLibrary() 看起来很有希望,与使用 #include header.h 有什么不同?
      【解决方案4】:

      我可以给你一个关于如何在 VS 2010 中添加 dll 的答案

      步骤: 右键单击解决方案资源管理器,属性,配置属性,常规,输出目录。 在这里按右箭头并选择眉毛。 浏览到 DLL 目录。

      仅此而已。

      【讨论】:

      • 这对将现有的 DLL 添加到项目中没有任何作用。
      猜你喜欢
      • 2021-05-12
      • 1970-01-01
      • 2016-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多