首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >windres:文件名、目录名或卷标签语法不正确

windres:文件名、目录名或卷标签语法不正确
EN

Stack Overflow用户
提问于 2016-07-30 06:51:25
回答 1查看 835关注 0票数 1

我用的是windows 10。

我试图使用c++ (项目目录中的MinGW文件夹)在c#中编译一个MinGW文件,但是它不会编译资源脚本(使用MinGW)。

每当我在cmd中使用windres时,它都会说:"C:/Users/username/AppData/Local/Temp/my.rc:1:无法识别的转义序列“。但仍然有效。但是当我通过c# (通过创建一个进程)运行完全相同的命令时,它根本无法工作,并说:“文件名、目录名或卷标签语法是不正确的。”

我的代码:

代码语言:javascript
复制
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 + ")");
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-30 11:29:58

最后使用批处理文件运行命令。

代码语言:javascript
复制
                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();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38671205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档