【问题标题】:Windows SDK 7.1 command prompt LNK1104Windows SDK 7.1 命令提示符 LNK1104
【发布时间】:2012-01-24 12:27:31
【问题描述】:

我刚刚在带有 SP3 的 Windows XP Professional 上安装了 Windows SDK 7.1。现在我正在检查安装是否正常,而且我已经遇到了问题。我仍然无法让 cl.exe 从 Windows SDK 7.1 命令提示符编译一个简单的 hello world C++ 代码。这是命令提示符输出的快照:

Setting SDK environment relative to C:\Program Files\Microsoft SDKs\Windows\v7.1\.
Targeting Windows XP x86 Debug


C:\Program Files\Microsoft SDKs\Windows\v7.1>cd /d "D:\My Documents\Sources"

D:\My Documents\Sources>cl /EHsc /FeD:\Target\hello hello.cpp
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

hello.cpp
Microsoft (R) Incremental Linker Version 10.00.30319.01
Copyright (C) Microsoft Corporation.  All rights reserved.

LINK : fatal error LNK1104: cannot open file 'C:\Documents'

我尝试将 hello.cpp 移动到 D:\ 并得到相同的结果。另一方面,CSC.exe 在同一命令提示符下顺利编译了 hello world C# 代码。我现在该怎么办?

请注意,我没有安装任何版本的 Visual Studio。我安装了 Windows SDK,以便我可以在 Qt Creator 中使用 Qt Framework 4.8.0 for VS2010 并在 SharpDevelop 中学习一点 C#。

【问题讨论】:

    标签: winapi cl.exe


    【解决方案1】:

    有人建议我将所有包含 C:\Documents and Settings\ 的环境变量值用双引号括起来,例如:Set ALLUSERSPROFILE="C:\Documents and Settings\All Users"Set USERPROFILE="C:\Documents and Settings\Ant Luc" 等等。除了%TEMP%%TMP% 之外,没有明智的方法来执行修改,因为它们无法通过系统属性> 高级> 环境变量进行编辑。所以我编辑了C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd 并在@ECHO OFF 正下方添加了以下几行:

    SET ALLUSERSPROFILE="C:\Documents and Settings\All Users"
    SET USERPROFILE="C:\Documents and Settings\Ant Luc"
    SET HOMEPATH="C:\Documents and Settings\Ant Luc"
    SET APPDATA="%USERPROFILE%\Application Data"
    SET TEMP="%USERPROFILE%\Local Settings\Temp"
    SET TMP="%USERPROFILE%\Local Settings\Temp"
    

    但是当我使用 cl.exe 编译 hello world 代码时,我得到了 Error C1083。无奈之下,我又编辑了C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd,把%TMP%的值改成了D:\VSTEMP,在D:\创建了一个叫VSTEMP的目录,再次尝试编译源代码,终于可以编译了,松了一口气成功。

    出于好奇,我决定安装 Visual Studio 2010 Express,打开 Visual Studio 命令提示符,尝试编译相同的 hello world 代码,但遇到了相同的问题,我用相同的解决方法解决了这些问题。结论:编译器(或链接器)无法正确处理%TMP% 中的空格——分配一个没有单个空格的目录。

    我仍然不知道我的设置有什么问题,但无论如何,所有这些麻烦似乎都很愚蠢。 FWIW,这是第一个让我跳过箍只是为了成功编译 hello world 代码的工具链。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-04
      • 1970-01-01
      • 2012-03-15
      • 2022-06-20
      • 1970-01-01
      • 2011-09-13
      • 2020-03-15
      • 2015-06-18
      相关资源
      最近更新 更多