C++ 如何在c/c+;中使用特定的dll+;?

C++ 如何在c/c+;中使用特定的dll+;?,c++,c,dll,cmake,C++,C,Dll,Cmake,像msvcr70/msvcr80/msvcr90.dll,指示链接器动态链接到其中一个的代码是什么样的 或者这与c/c++有关,但是cmake?您给出的具体示例恰好是DLL,它们通常通过清单和并排链接,至少在从Visual Studio构建应用程序(使用正确的项目设置)时是如此。为什么您试图指示编译器通过代码链接它们 链接到特定DLL最常用的方法是,当DLL的库可用时,然后使用pragma #pragma comment(lib, "<library name>") #pragm

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


或者这与
c/c++
有关,但是
cmake

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

链接到特定DLL最常用的方法是,当DLL的库可用时,然后使用pragma

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

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

链接到特定DLL最常用的方法是,当DLL的库可用时,然后使用pragma

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

呃,您肯定想先了解DLL/链接

书面问题无法回答

注意:不确定Cmake的含义,但可以在CMakeLists.txt文件中轻松指定链接库。。。例外情况是您注意到的DLL,因为它们依赖于平台。在CMake脚本中需要一些东西来检查MSVC的版本


为什么你想链接到一个较旧的运行时,Vista Forward附带了VC9运行时,如果有人在使用XP,你可以给他们VS2008/2010的“可再发行软件包”…

呃,你肯定想先了解DLL/链接

书面问题无法回答

注意:不确定Cmake的含义,但可以在CMakeLists.txt文件中轻松指定链接库。。。例外情况是您注意到的DLL,因为它们依赖于平台。在CMake脚本中需要一些东西来检查MSVC的版本


为什么您要链接到旧的运行时,Vista Forward随VC9运行时一起提供,如果有人使用XP,您可以给他们VS2008/2010的“可再发行软件包”…

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

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

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


您可以在本文中了解到一些关于这一点的更深入的见解和一些技巧。

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


你可以在这篇文章中读到一些关于这个如何工作的更深入的见解和一些工作技巧。

另外,你能详细说明如何使
cmake
使用VS2008/2010的“可再发行包”吗?cmake本身在构建时不需要再发行包,但您可以让CMake使用诸如“nullsoft scriptable install system”之类的外部工具为用户构建安装程序。示例:搜索“opencv”,下载安装程序和源代码。。。您可以尝试使用cmake+源代码重新创建安装程序。此外,您能否详细说明如何使
cmake
使用VS2008/2010的“可再发行包”?cmake本身在构建时不需要再发行包,但您可以让CMake使用诸如“nullsoft scriptable install system”之类的外部工具为用户构建安装程序。示例:搜索“opencv”,下载安装程序和源代码。。。您可以尝试使用cmake+源重新创建安装程序。