找了網路解法,也不能直接解決,看來是查到的解法不適用我的環境,只好動手改一下。出問題的是位於「~/.wine/drive_c/Program Files (x86)/Dev-Cpp」目錄下的「ConsolePauser.exe」這個程式。
1. 將原程式 ConsolePauser.exe 更名
知道是哪個程式出問題,當然就不要用它了。但是為求謹慎,不要直接將該程式刪除,以更名的方式取代它。[SiB@X53SC ~]$ cd .wine/drive_c/Program\ Files\ \(x86\)/Dev-Cpp/
[SiB@X53SC Dev-Cpp]$ mv ConsolePauser.exe ConsolePauser.exe.org
2. 修改、編譯新的 ConsolePauser.exe
參考〔資料1〕的程式照著用,不能解決,略做修改如下:
#include <iostream>將之存在 Temp 目錄,檔名為 ConsolePauser.c。接著,用 g++ 編譯它。
#include <string>
using namespace std;
int main(int argc, char ** argv)
{
string s = argv[1];
//Opens new window through gnome-terminal:
//string command = "gnome-terminal -e "; // Using GNOME Desktop
string command = "mate-terminal -e "; // Using MATE Desktop
command += string("\"") + "bash -c ";
command += string("\\\"") + "wine ";
command += string("\\\\\\\"") + s;
command += string("\\\\\\\"") + "; bash ";
command += string("\\\"");
command += string("\"");
system(command.c_str());
cerr << command << endl;
//Make sure that window lingers...
system("exec bash");
return 0;
}
[SiB@X53SC Temp]$ g++ ConsolePauser.c -o ConsolePauser.exe
3. 複製 ConsolePauser.exe
將新編譯的「ConsolePauser.exe」複製到「~/.wine/drive_c/Program Files (x86)/Dev-Cpp」目錄下,
註:若用 Dev-C++ 編譯「ConsolePauser.c」,其檔案會較大,不適合。
[SiB@X53SC Temp]$ cp ConsolePauser.exe ~/.wine/drive_c/Program\ Files\ \(x86\)/Dev-Cpp/
此時新的「ConsolePauser.exe」就可以發揮作用。在 Dev-C++ 下使用【編譯並執行】或【執行】都可會自動跳出一個視窗,並在其中執行你寫的程式。
註:若用 Dev-C++ 編譯「ConsolePauser.c」,其檔案會較大,不適合。
已測試版本:
- Fedora: 32
- Wine 5.21
- Dev-C++ 5.11
沒有留言:
張貼留言
感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)