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
我如何制作c++;VS2008中的项目引用VS2005中的include目录? 我在Visual Studio 2008中有C++和C语言项目。C++项目使用了在VS2005中构建的API。我需要那个C++项目来引用VS2005标准库文件。编译器搜索include目录的顺序始终指向VS2008中的include文件,特别是向量文件。在版本中运行时,当程序引用VS2008中的矢量文件时,会导致程序崩溃。如何强制C++项目使用VS2005的包含目录?_C++_Visual Studio 2008 - Fatal编程技术网

我如何制作c++;VS2008中的项目引用VS2005中的include目录? 我在Visual Studio 2008中有C++和C语言项目。C++项目使用了在VS2005中构建的API。我需要那个C++项目来引用VS2005标准库文件。编译器搜索include目录的顺序始终指向VS2008中的include文件,特别是向量文件。在版本中运行时,当程序引用VS2008中的矢量文件时,会导致程序崩溃。如何强制C++项目使用VS2005的包含目录?

我如何制作c++;VS2008中的项目引用VS2005中的include目录? 我在Visual Studio 2008中有C++和C语言项目。C++项目使用了在VS2005中构建的API。我需要那个C++项目来引用VS2005标准库文件。编译器搜索include目录的顺序始终指向VS2008中的include文件,特别是向量文件。在版本中运行时,当程序引用VS2008中的矢量文件时,会导致程序崩溃。如何强制C++项目使用VS2005的包含目录?,c++,visual-studio-2008,C++,Visual Studio 2008,这是一个彻底的攻击,但是您可以通过替换以下内容来显式地包含vector的特定实现: #include <vector> 但是如果你需要你的VS2008项目使用一个旧版本的STL,那么我闻到了一些非常糟糕的东西。如果您想使用VS2005头文件,您真的应该使用VS2005构建。您可能会通过摆弄include文件路径来解决问题,但我认为这会带来很多麻烦。我敢肯定它不受支持,如果标头想要从CRT库中提取任何内容(即,您正在使用的内容恰好不是仅标头的内容),那么它可能不会很好地工作。这里有两

这是一个彻底的攻击,但是您可以通过替换以下内容来显式地包含vector的特定实现:

#include <vector>

但是如果你需要你的VS2008项目使用一个旧版本的STL,那么我闻到了一些非常糟糕的东西。如果您想使用VS2005头文件,您真的应该使用VS2005构建。您可能会通过摆弄include文件路径来解决问题,但我认为这会带来很多麻烦。我敢肯定它不受支持,如果标头想要从CRT库中提取任何内容(即,您正在使用的内容恰好不是仅标头的内容),那么它可能不会很好地工作。

这里有两种选择,您可以尝试

首先将VS2005版本的
重命名为
。将包含路径添加到此目录,然后更改

#include <vector>
第二步,更改周围的一些项目设置以仅使用VS8包含,而不是VS9包含:

项目>设置>配置属性>C/C++>常规>设置为指向VS2005的包含目录的附加包含目录。这将包括所有vs2005文件,而不仅仅是


*Project>Settings>Configuration Properties>C/C++>Preprocessor>*忽略标准包含路径设置为TRUE如果程序在发布版本中崩溃,问题可能出在代码而不是库代码上,恢复到VS2005只会让你头痛不已。此外,问题可能与编译器代码生成有关,而不是与编译器库有关,因此使用VS2010和VS2005的混合版本可能无法解决问题,我认为这可能会带来更大的问题。优化常常会破坏依赖于未定义行为的代码,因为编译器可能以不同的方式合法地运行。你应该修改你的代码

也许使用旧库更好的快速修复方法是应用选择性优化:专门针对出现问题的模块禁用优化。这也将有助于隔离问题,并且在没有优化设置的情况下,该模块可以更容易地在调试器中调试


另外,仅仅引用不同的头文件可能是不够的;您还需要链接VC2005库;否则,库和标头可能不匹配。简而言之,不要使用比原始问题更复杂、更容易出错的“解决方案”

我不得不问——为什么不在VS2005中编译呢?在这里,询问代码为什么会失败,而不是如何实现一个不明智且有缺陷的解决方案,会更好。还有,你的C#项目与这个问题有什么关联?我需要强制属性中的某个目录。#include在API代码中不是我自己的,所以我不能搞乱它。如果你提到的API代码在公共类中包含STL内容,那么你使用的API就坏了。在这种情况下,最简单的方法就是使用VS2005。
#include <vector>
#include "vector_vs8"