Sublime Text 3 错误:[WinError2] 系统找不到指定的文件

问题描述 投票:0回答:3

现在我知道这个问题之前已经被问过好几次了,但是我能找到的这个问题的所有实例都与 python 有关。然而,即使当我尝试运行 C++ 程序时,这个问题也会影响我。 今天早些时候,我重新整理了一些文件(包括那些有 sublime 文本的文件)。 我的崇高文字开始起作用,菜单完全消失了。 我重新安装了它,看起来不错,但每当我尝试运行 cpp (或任何其他)文件时,它都会出现错误

[WinError 2] The system cannot find the file specified
[shell_cmd: g++ "C:\Users\user\Desktop\INOI22\dynamic programming\lis.cpp" -o "C:\Users\user\Desktop\INOI22\dynamic programming/lis"]
[dir: C:\Users\user\Desktop\INOI22\dynamic programming]
[path:  C:\Windows\System32; C:\Windows; C:\Users\user\Desktop\Appdata\Local;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Users\user\Desktop\MinGW\bin;c:\users\user\desktop\inoi22\mingw\bin; c:\windows\system32; c:\windows; c:\users\user\appdata\local]
[Finished]

此后我已尝试重新安装两次,每次都出现相同的错误。

我还尝试弄乱我的环境变量,我认为这可能是导致此问题的原因。

目前我的

%PATH%
变量设置为

C:\Windows\System32; C:\Windows; 
C:\Users\user\Desktop\Appdata\Local;C:\Windows\system32;
C:\Windows;
C:\Windows\System32\Wbem;
C:\Windows\System32\WindowsPowerShell\v1.0\;
C:\Users\user\Desktop\MinGW\bin

c++ environment-variables g++ sublimetext3
3个回答
1
投票

您似乎正在使用 Sublime Text 附带的

C++ Single File
构建系统:

{
    "shell_cmd": "g++ \"${file}\" -o \"${file_path}/${file_base_name}\"",
    "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
    "working_dir": "${file_path}",
    "selector": "source.c++",

    "variants":
    [
        {
            "name": "Run",
            "shell_cmd": "g++ \"${file}\" -o \"${file_path}/${file_base_name}\" && \"${file_path}/${file_base_name}\""
        }
    ]
}

不幸的是,它以 Unix/Linux 为中心,因为生成的可执行文件仅由文件名的第一部分命名。因此,如果您正在编译

test.cpp
,可执行文件将被称为
test
,没有扩展名。然而,在 Windows 上,可执行文件需要具有
.exe
扩展名(一般来说,也有例外)才能正常运行。我们将通过修改构建系统来解决这个问题。

在 Sublime 中,一直选择底部的

Tools → Build System → New Build System…
。将出现如下所示的模板:

{
    "shell_cmd": "make"
}

删除所有这些,然后添加以下内容:

{
    "shell_cmd": "g++ \"${file}\" -o \"${file_path}/${file_base_name}.exe\"",
    "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
    "working_dir": "${file_path}",
    "selector": "source.c++",

    "variants":
    [
        {
            "name": "Run",
            "shell_cmd": "g++ \"${file}\" -o \"${file_path}/${file_base_name}.exe\" && \"${file_path}/${file_base_name}.exe\""
        }
    ]
}

您会注意到我用

\"${file_path}/${file_base_name}\"
替换了
\"${file_path}/${file_base_name}.exe\"
部分。最后要做的事情是保存新的构建系统。按 CtrlS(或
File → Save
),保存对话框应自动位于您的
Packages/User
文件夹中,其中
Packages
是选择
Preferences → Browse Packages…
时打开的文件夹。在 Windows 上,可以是

  • 常规安装:
    C:\Users\YourUserName\AppData\Roaming\Sublime Text 3\Packages
    C:\Users\YourUserName\AppData\Roaming\Sublime Text\Packages
  • 便携式安装:
    InstallationFolder\Sublime Text 3\Data\Packages
    InstallationFolder\Sublime Text\Data\Packages

确切的路径取决于版本以及您是否从 Sublime Text 3 升级。将文件命名为

C++ Single File (Windows).sublime-build
。它现在应该显示在构建系统选择菜单和命令面板中。

现在,您应该能够正确编译(假设代码正确)并运行可执行文件而不会出现问题。请记住,Sublime 不支持常规构建系统的交互式用户输入(C 中的

scanf
,C++ 中的
cin
),因此您需要 使用不同的自定义构建系统或使用
Terminus
(推荐的解决方案)。


0
投票

1.首先我检查了我的file.cpp、inputf.in和outputf.out是否在同一个文件夹中。 2.然后,我通过转到“首选项”>“浏览包”>“buildsysfile.sublime-build”检查了构建系统文件,我注意到在文件中我指定了“outputf.in”来查看输出,但我打开了“outputf.out”,所以我指定了输出并保存。

这对我有用。


0
投票

如果您使用 McAfee 或任何其他软件等防病毒软件,您也可能会遇到此问题。尝试禁用实时扫描,然后运行您的代码。

另外,我正在使用以下构建文件 c++

{
"shell_cmd": "g++ \"${file}\" -o \"${file_path}/${file_base_name}.exe\"",
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir": "${file_path}",
"selector": "source.c++",

"variants":
[
    {
        "name": "Run",
        "shell_cmd": "g++ \"${file}\" -o \"${file_path}/${file_base_name}.exe\" && \"${file_path}/${file_base_name}.exe\""
    }
]

}

© www.soinside.com 2019 - 2024. All rights reserved.