Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/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++ 链接:致命错误LNK1104:无法打开文件';libcpmt.lib';手动配置LIB环境变量后_C++_Visual Studio 2010_Command Line - Fatal编程技术网

C++ 链接:致命错误LNK1104:无法打开文件';libcpmt.lib';手动配置LIB环境变量后

C++ 链接:致命错误LNK1104:无法打开文件';libcpmt.lib';手动配置LIB环境变量后,c++,visual-studio-2010,command-line,C++,Visual Studio 2010,Command Line,我试图从命令行使用clVisualStudio2010编译器 由于某些原因,我安装的Visual Studio 2010无法正确配置INCLUDE和LIB目录,请参阅。如果我跑 `vcvars32.bat` 我收到以下错误消息: ERROR: Cannot determine the location of the VS Common Tools folder. 然后我尝试手动设置这些环境变量。因此,我创建了一个简单的bat文件,如下所示: Set INCLUDE="C:\Program F

我试图从命令行使用
cl
VisualStudio2010编译器

由于某些原因,我安装的Visual Studio 2010无法正确配置
INCLUDE
LIB
目录,请参阅。如果我跑

`vcvars32.bat`
我收到以下错误消息:

ERROR: Cannot determine the location of the VS Common Tools folder.
然后我尝试手动设置这些环境变量。因此,我创建了一个简单的
bat
文件,如下所示:

Set INCLUDE="C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include;"

Set LIB="C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\lib;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib;"

cl test.cpp
但我现在收到以下错误

LINK : fatal error LNK1104: cannot open file 'libcpmt.lib'
我不明白为什么会发生这种情况,因为
libcpmt.lib
位于上述
lib
目录之一内

这个问题有什么解决办法吗

编辑

我在第一个答案中使用了这个过程,现在设置了
VS100COMNTOOLS
环境变量。但是,
INCLUDE
LIB
环境变量仍然没有设置,即使我试图通过

set INCLUDE = "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include;"

set LIB = "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\lib;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib;"
因此,当我试图编译
.cpp
文件时,我收到

fatal error C1034: iostream: no include path set
编辑:最终解决方案

按照汉斯·帕桑的建议,这是最终的解决方案

@SET INCLUDE=C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include;

@SET LIB=C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib;C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\lib;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib;

cl /EHsc -o FileName.obj -c FileName.cpp

去掉双引号


真正的问题是没有设置VS100COMNTOOLS环境变量。你需要弄清楚为什么环境会如此混乱。控制面板+系统+高级+环境变量。或者使用VS设置修复选项。注销+更改后登录。

非常感谢您的回答。我已经向前迈出了一步来解决这个问题,请参阅我编辑的文章,但我仍然无法从命令行编译。任何进一步的帮助都将不胜感激:-)不知道该编辑应该显示什么,您仍然使用双引号,因此它当然仍然不起作用。您是否考虑过只使用IDE?这样做是为了防止你陷入这样的小细节。推荐。谢谢你的评论。Visual Studio 2010的一个已知缺陷是无法为CUDA代码创建静态
lib
s,因此我不得不使用命令行进行
nvcc
编译。我有一个混合了CUDA和C/C++代码的库,因此我尝试使用命令行来处理这两种代码。我曾尝试将IDE用于C/C++部分,但存在链接问题。我使用带双引号或不带双引号的
Set
命令,但无法设置
INCLUDE
LIB
环境变量…当然。这不是一个bug,它是故意的。防止程序员使用要求使用库的程序员处于“真正知道自己在做什么”类别的库。而且,当你使用Cuda时,你肯定需要知道你在做什么,保持256核的嗡嗡声不是一件小事。所以他们故意让开始变得困难。这是一个挑战,他们故意让你失败。非常感谢。按照你的建议,我终于找到了解决办法。我已经编辑了我的文章以备将来参考。再次感谢。