在 Visual Studio 2010 中从 .NET 项目启动 C++ 项目

Posted

技术标签:

【中文标题】在 Visual Studio 2010 中从 .NET 项目启动 C++ 项目【英文标题】:Launching a C++ project from a .NET project in Visual Studio 2010 【发布时间】:2014-04-01 13:59:57 【问题描述】:

我有以下问题:

我有两个项目,Project Game 包含一个使用 SDL 库以 C++ 编码的游戏。 Project Launcher 是一个 C# .NET 项目,它提供了一个界面,可以在启动 Project Game 之前从中选择选项。

我的问题是 A) 我如何从 Project Launcher 中启动 Project Game? B) 如何将参数从 Project Launcher 传递到 Project Game?

我还没有真正找到一个明确的解决方案,只是到处窃窃私语。对于参数,很明显,只需使用参数调用 .exe 并在 C++ 中读取它们,但我想知道 .NET 中是否有更简洁的方法来执行此操作。任何帮助将不胜感激。如果我找到解决方案,我会在这里发布。

【问题讨论】:

【参考方案1】:

我目前没有 IDE,所以我不确定,但我记得像这样的东西应该可以解决问题。

ProcessStartInfo proc = new ProcessStartInfo();
//Add the arguments
proc.Arguments = args; 
//Set the path to execute
proc.FileName = gamePath;
proc.WindowStyle = ProcessWindowStyle.Maximized;

Process.Start(proc);

编辑: 我的错,我没有看到您正在寻找不使用将参数传递给游戏进程的方法。我留下回复仅供参考! :)

【讨论】:

【参考方案2】:

.NET 框架包含一个名为 Process 的类,它包含在 Diagnostics 命名空间中。您应该包含命名空间,使用 System.Diagnostics 然后启动您的应用程序,如下所示:

using System.Diagnostics;

// Prepare the process to run
ProcessStartInfo start = new ProcessStartInfo();
// Enter in the command line arguments, everything you would enter after the executable name itself
start.Arguments = "readme.txt"; 
// Enter the executable to run, including the complete path
start.FileName = "notepad";
// Do you want to show a console window?
start.WindowStyle = ProcessWindowStyle.Hidden;
start.CreateNoWindow = true;

//Is it maximized?
start.WindowStyle = ProcessWindowStyle.Maximized;

// Run the external process & wait for it to finish
using (Process proc = Process.Start(start))

     proc.WaitForExit();

     // Retrieve the app's exit code
     exitCode = proc.ExitCode;

【讨论】:

以上是关于在 Visual Studio 2010 中从 .NET 项目启动 C++ 项目的主要内容,如果未能解决你的问题,请参考以下文章

在 Visual Studio 6 中从 VB 调用 VS2010 C++ dll

在Visual Studio 2010中从生成中排除moc-ed文件

从 Visual Studio 2010 (VB.NET) 读取访问查询

如何在 Visual Studio 2015 中从 Git 获取特定版本?

在 Visual Studio Code 中从 NPM 包自动导入

如何在 VIsual Studio 2013 中从 UML 图生成 C++ 代码