Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 如何编译DLL使其与VS2005/2008/2010一起工作 我有一个C++ DLL。有没有一种方法可以编译它,这样它就可以与VS2005/2008/2010一起使用,而不用我做3个不同的构建_Visual Studio_Visual Studio 2008_Visual Studio 2010_Visual Studio 2005 - Fatal编程技术网

Visual studio 如何编译DLL使其与VS2005/2008/2010一起工作 我有一个C++ DLL。有没有一种方法可以编译它,这样它就可以与VS2005/2008/2010一起使用,而不用我做3个不同的构建

Visual studio 如何编译DLL使其与VS2005/2008/2010一起工作 我有一个C++ DLL。有没有一种方法可以编译它,这样它就可以与VS2005/2008/2010一起使用,而不用我做3个不同的构建,visual-studio,visual-studio-2008,visual-studio-2010,visual-studio-2005,Visual Studio,Visual Studio 2008,Visual Studio 2010,Visual Studio 2005,谢谢使用中的visual studio版本对于是否可以引用给定的程序集没有任何影响 唯一重要的是编译程序集所依据的框架版本。。假设它是一个.net程序集 无论如何,通常的做法是提供针对每个框架版本(2.0、3.5和4.0)编译的版本 但是,如果您正在编译一个非托管C++ DLL;然后只需提供该dll的32位和64位版本。在这种情况下,使用的.NET版本(和VisualStudio版本)是不重要的。< P>您通常可以“使用”一个C++ DLL,如果您只是链接到VisualStudio,则可以使用任

谢谢

使用中的visual studio版本对于是否可以引用给定的程序集没有任何影响

唯一重要的是编译程序集所依据的框架版本。。假设它是一个.net程序集

无论如何,通常的做法是提供针对每个框架版本(2.0、3.5和4.0)编译的版本

但是,如果您正在编译一个非托管C++ DLL;然后只需提供该dll的32位和64位版本。在这种情况下,使用的.NET版本(和VisualStudio版本)是不重要的。

< P>您通常可以“使用”一个C++ DLL,如果您只是链接到VisualStudio,则可以使用任何版本的VisualStudio。 <>但是,当你的DLL被编译时,它将被目标指向C++运行时的特定版本,所以程序的最终用户需要在PC上安装运行时(VisualC++ +可重新分配包)。您的最终用户必须同时安装2005和2010可再发行软件包。如果使用其他库(MFC等),通常情况下也会如此

如果您这样做,您还必须小心内存分配-在一个运行时版本中分配的内存不能被另一个运行时版本安全地释放。因此,dll分配的任何内容都必须由dll解除分配,而exe分配的任何内容都不能由dll解除分配

因此,大多数人在构建程序的其余部分时都会使用相同版本的VS重新构建dll,以最大限度地减少兼容性问题——最终,在每个VS版本中构建要比在不这样做的情况下解决所有问题容易得多


(提示:您可以从命令行运行VS并让它构建一个项目/解决方案,因此编写一个批处理脚本将一次自动构建所有三个变体需要5分钟)

什么是“如此有效”?这个问题根本没有任何意义!