1

我認爲很多人正在使用或用於在Windows 8上使用Sublime Text 2編輯器。我有一個奇怪的錯誤:無法構建C++程序。我的目標是使用Sublime Text 2構建和運行簡單的程序,以便它可以在下面的窗口中顯示輸出,Xcode或Codeblocks樣式。無法使用Sublime Text 2構建C++程序Windows 8

我的C++昇華建造(其默認設置):

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

    "variants": 
    [ 
     { 
      "name": "Run", 
      "cmd": ["bash", "-c", "g++ '${file}' -o '${file_path}/${file_base_name}' && '${file_path}/${file_base_name}'"] 
     } 
    ] 
} 

當我編譯一個簡單的Hello World程序,它編譯和運行良好,並且輸出顯示的下面板上崇高的文字,就像我想要的一樣。

但如果我運行更復雜的程序,如下圖所示:

// main.cpp 
// LongestIncreasingSubsequence 
#include <iostream> 
#include <vector> 
#include <limits> 
using namespace std; 

int main(int argc, const char * argv[]) 
{ 


    int n; 

    cin >> n; 
    vector<int> nums(n); 
    vector<int> lis_so_far(n); 
    int final_longest = 1; 

    for (int i=0; i<n; i++) { 
     cin >> nums[i]; 
     lis_so_far[i] = 1; 
    } 
    int so_far; 
    for (int j=n-1; j>=0; j--) { 

     so_far = 0; 

     for (int i=j+1; i<n; i++) { 
     // cout << "hi" <<endl; 
      if (nums[i] > nums[j]) { 
       // cout << "hello" <<endl; 

       if (lis_so_far[i] > so_far) { 
        so_far = lis_so_far[i]; 
        //cout << so_far << endl; 
       } 

      } 
     } 
     if (j<n-1) { 
      lis_so_far[j] += so_far; 
      if (lis_so_far[j] > final_longest) { 
       final_longest = lis_so_far[j]; 
      } 
     } 
    } 

    for (int i=0; i<n; i++) { 
     cout << lis_so_far[i] << endl; 
    } 
    cout << final_longest << endl; 


    return 0; 
} 

,它給了我一個失蹤limits.h中的錯誤,即使我已經安裝了cygwin。是不是應該ST2知道所在的C++庫?:

C:\Users\Leonardo\Desktop\main5.cpp:11: limits: No such file or directory 
[Finished in 6.5s with exit code 1] 

如果我評論中的#include限行,它建立,但是當我運行它,它給了我一個權限被拒絕的錯誤,即使有不是命令提示符運行:

/cygnus/cygwin-b20/H-i586-cygwin32/i586-cygwin32/bin/ld: cannot open output file C:\Users\Leonardo\Desktop/main5.exe: Permission denied 
collect2: ld returned 1 exit status 

任何想法?我只想讓ST2充當Xcode或Codeblocks。

回答

0

權限被拒絕錯誤:如果程序正在運行(查看進程),請檢查任務管理器。 缺少標題:您的編譯器(g ++)應該知道它可以找到的位置,而不是文本編輯器。我想你應該使用<爬升>

0

這是一個崇高的控制檯「錯誤」。這是因爲你永遠不會終止最後的編譯。例如。

#include <iostream> 
int main(){ 
cout << "it's a program" << endl; 
cin.get() // system pause 
} 

當你運行這個第一次,你成功編譯,但是,當你在呼喚cin.get()暫停,程序永遠不會終止,並保持開放。

然後,如果您嘗試再次編譯,您將看到權限錯誤,因爲該程序仍在運行。刪除暫停命令,你沒有錯誤。