【问题标题】:How do I use some specific dll in c/c++?如何在 c/c++ 中使用某些特定的 dll?
【发布时间】:2010-04-27 14:51:37
【问题描述】:

msvcr70/msvcr80/msvcr90.dll,指示链接器动态链接到其中一个的代码是什么样的?

或者这和c/c++有什么关系,但是cmake

【问题讨论】:

    标签: c++ c dll cmake


    【解决方案1】:

    您给出的具体示例恰好是通常通过清单和并排链接的 DLL,至少在从 Visual Studio 构建应用程序(使用正确的项目设置)时是如此。为什么要指示编译器通过代码链接它们?

    链接到特定 DLL 最常用的方法是,当您有可用的 DLL 库时,然后使用编译指示

     #pragma comment(lib, "<library name>")
    

    【讨论】:

      【解决方案2】:

      您在链接时指定一个 .lib 文件,而匹配的 .dll 将在运行时使用,因此(例如)如果您想使用 msvcr70.dll,您需要与 msvcr70.lib 链接。

      【讨论】:

        【解决方案3】:

        通常,您链接的 C/C++ 运行时取决于您使用的 VisualStudio 版本。 (msvcr80.dll -> VS2005, msvcr90.dll -> VS2008 等)

        您可以在此blog post 中阅读有关其工作原理的更深入见解以及一些工作技巧。

        【讨论】:

          【解决方案4】:

          嗯,你肯定想先了解 DLL/链接...http://www.infernodevelopment.com/how-create-dll-c-using-run-time-dynamic-linking

          所写的问题无法回答

          注意:不确定您对 Cmake 的含义,但您可以轻松地在 CMakeLists.txt 文件中指定链接库...例外是您注意的 DLL,因为它们是平台相关的。您需要 CMake 脚本中的某些内容来检查 MSVC 的版本。

          您为什么要链接到较旧的运行时,Vista 以后带有 VC9 运行时,如果有人使用 XP,您可以给他们 VS2008/2010 的“可再发行包”...

          【讨论】:

          • 另外,您能否详细说明如何让cmake 使用 VS2008/2010 的“可再发行包”?
          • Cmake 本身在构建时不需要可再发行包,但您可以让 CMake 使用诸如“nullsoft scriptable install system”之类的外部工具来为用户构建安装程序。示例:搜索'opencv',下载安装程序和源码...你可以尝试用cmake + source重新创建安装程序。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-09
          • 2023-02-07
          • 2020-04-13
          • 2021-12-22
          • 1970-01-01
          相关资源
          最近更新 更多