簡體   English   中英

windres:文件名,目錄名或卷標簽語法不正確

[英]windres: The filename, directory name, or volume label syntax is incorrect

我正在使用Windows 10。

我正在嘗試使用MinGW(MinGW文件夾位於projects目錄中)在c#中編譯一個c ++文件,但它不會編譯資源腳本(使用windres)。

每當我在cmd中使用windres時,都會說:“ C:/ Users /用戶名/AppData/Local/Temp/my.rc:1:無法識別的轉義序列”。 但仍然有效。 但是,當我通過c#運行完全相同的命令(通過創建一個進程)時,它根本不起作用,並說:“文件名,目錄名或卷標語法不正確。”

我的代碼:

String tempDir = Path.GetTempPath();
String file = tempDir + "my.rc";

using (StreamWriter writer = new StreamWriter(file, false, Encoding.ASCII))
{
     if (!textIcon.Text.Equals(""))
         await writer.WriteLineAsync("25 ICON \"" + textIcon.Text + "\"");
     if (checkAdmin.Checked)
     {
         String manifest = tempDir + @"\manifest.xml";
         createManifest(manifest);
         await writer.WriteLineAsync("55 24 \"" + manifest + "\"");
     }
}

String args2 = "/c \"" + Path.Combine(gccLocation, "windres.exe") + "\" -o \"" + Path.Combine(tempDir, "my.o").Replace("\\", "/") + "\" \"" + file.Replace("\\", "/") + "\"";

//Debug
//args2 = "/k echo " + args2;

ProcessStartInfo psi2 = new ProcessStartInfo();
psi2.FileName = "CMD.exe";
psi2.Arguments = args2;
psi2.UseShellExecute = false;
psi2.CreateNoWindow = true;

//Debug
//psi2.CreateNoWindow = false;

Process windres = Process.Start(psi2);
windres.WaitForExit();

if(windres.ExitCode != 0)
{
    MessageBox.Show("Error: Could not create resource file (" + windres.ExitCode + ")");
}

最終使用批處理文件運行命令。

                String args2 = "windres.exe -i \"" + Path.GetFullPath(file) + "\" -o \"" + Path.Combine(tempDir, "my.o") + "\"" ;

                using (StreamWriter writer = new StreamWriter(tempDir + @"\my.bat", false, Encoding.ASCII))
                {
                    await writer.WriteLineAsync("@echo off");
                    await writer.WriteLineAsync("cd " + Path.GetFullPath(gccLocation));
                    await writer.WriteLineAsync(args2);
                }

                //Debug
                //args2 = "/k echo " + args2;

                ProcessStartInfo psi2 = new ProcessStartInfo();
                psi2.FileName = tempDir + @"\my.bat";
                psi2.UseShellExecute = false;
                psi2.CreateNoWindow = true;

                //Debug
                //psi2.CreateNoWindow = false;

                Process windres = Process.Start(psi2);
                windres.WaitForExit();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM