我的开发机器正在运行Windows 7 Ultimate x64。我安装了Visual Studio 2010 Ultimate。当我打开 Visual Studio命令提示符(2010)时,我收到消息
设置使用Microsoft Visual Studio 2010 x86工具的环境。
我还在Windows PowerShell用户配置文件中设置了PowerShell Community Extensions。我使用Invoke-BatchFile
cmdlet将Visual Studio工具安装到我的所有PowerShell会话中
$vcargs = ?: {$Pscx:Is64BitProcess} {'amd64'} {'x86'}
$vcvars = "${env:VS100COMNTOOLS}..\..\VC\vcvarsall.bat"
Invoke-BatchFile $vcvars $vcargs
我的vcargs
已解析为amd64
。我在vcvarsall.bat
文件中查找了x64批处理文件的位置,并获得了~dp0bin\amd64\vcvars64.bat
。该目录(和文件)不存在。
如何正确安装vcvars64.bat
文件?
答案 0 :(得分:5)
在批处理器中运行时,%~dp0会扩展到执行.bat文件的路径。因此,在VS2010的默认安装中,它解析为c:\ program files \ microsoft visual studio 10.0 \ vc \ bin \ amd64 \ vcvars64.bat。这确实是遗漏的,这是一个他们似乎不是interesting in fixing的错误。
请改用“x86_amd64”。您将获得交叉编译器,与IDE使用的相同。
答案 1 :(得分:4)
问题是Visual Studio的安装不完整。我只安装了C#组件。我需要至少安装 Visual C ++ x64编译器和工具。
我有problems将这些组件添加到现有安装中。 VS2010,特别是安装了SP1,在修改安装方面有很多错误。我遇到了某种路径未找到错误
答案 2 :(得分:0)
我多次遇到大致相同的问题。似乎MS为此设置的结构是如此脆弱,以至于在同一台机器上安装或移除任何软件(或者,显然,在该机器附近的任何地方呼吸)可以并且将会破坏它。更糟糕的是,他们有一个几乎难以理解的批处理文件互相调用的网络,最终会以几乎最迂回的方式执行一些相当简单的任务。
虽然我认为它浪费了一点内存,但我决定稍微简化一下,并使用它:
#include <windows.h>
#include <iostream>
#include <string>
#include <process.h>
void setenv(std::string const &name, std::string const &value) {
SetEnvironmentVariable(name.c_str(), value.c_str());
}
std::string vs_base = "C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\";
std::string vc_base = vs_base + "VC\\";
std::string sdk_dir = "C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0A\\";
int main(int argc, char **argv) {
char inc_name[] = "INCLUDE";
char lib_name[] = "LIB";
char path_name[] = "PATH";
std::string inc_dir = getenv(inc_name);
std::string lib_dir = getenv(lib_name);
std::string path_dir = getenv(path_name);
inc_dir = vc_base + "include;" + sdk_dir + "include;" + inc_dir;
lib_dir = vc_base + "lib;" + sdk_dir + "lib;" + lib_dir;
path_dir = vc_base + "bin;" + sdk_dir + "bin;" + vs_base + "Common7\\IDE;" + path_dir;
setenv(inc_name, inc_dir);
setenv(lib_name, lib_dir);
setenv(path_name, path_dir);
char path[MAX_PATH];
GetSystemDirectory(path, sizeof(path));
strcat(path, "\\cmd.exe");
_spawnlp(_P_WAIT, path, path, NULL);
return 0;
}
您必须调整顶部的基本目录,以确定安装了物品的位置。有一天,我想我应该重写这个以使用一个单独的配置文件(我已经完成了一个应该运行得相当好的XML格式),但这已经足够好了,我没有费心去完成它,无论如何,对于程序员来说,做一个微不足道的修改和重新编译并不是特别麻烦。
答案 3 :(得分:0)
我遇到了问题,我有视觉工作室2010专业版(我猜不是SP1,它说&#34;版本10.0.30319.1 RTMRel&#34;在关于),我也遇到了问题在C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC
文件夹中,它有vcvarsall.bat,但它试图找到任何其他.bat文件的所有路径都是无效的,我也没有其他的bat文件。
我遇到了this forum post,这是解决我问题的唯一方法。 这里的一些人也说#34;只需使用SetEnv&#34;但是我不知道它在哪里,因为它不在我的PATH中(输入setenv会导致找不到命令&#39;),所以这是一个更完整的答案,我是&#39;我在这里发帖,所以人们不必像我这么长时间一样挣扎
出于档案目的在此处发布:
批处理文件将环境参数设置为64位编译 包含在Windows SDK中。
安装Windows SDK后,使用以下调用CALL &#34; C:\ Program Files \ Microsoft SDKs \ Windows \ v7.1 \ Bin \ SetEnv.cmd&#34; / 64
或创建文件C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ vc \ bin \ amd64 \ vcvars64bat,上面一行。
答案 4 :(得分:-1)
您是否拥有Microsoft Windows SDK 7.1?
打开普通的Visual Studio命令提示符并键入:
setenv /x64
如果缺少64位编译器,则可能需要阅读KB2519277。