1

使用 Visual Studio 2010,使用 C++ 编码:

所以我有一个解决方案和两个项目:项目 1 是一个 Windows 应用程序,旨在充当程序的 GUI,而项目 2 是一个控制台应用程序,旨在与一些外部应用程序交互。

我想在项目 1 中创建一个按钮,按下该按钮会执行项目 2。最简单的方法是什么?我正在考虑通过命令提示符使用“system(”Project2.exe“);”运行项目 2。一种方法,但我不知道如何引用项目可执行文件而不是外部的、已经存在的可执行文件。

一般来说,我对 C++ 和 Visual Studio 还是很陌生,所以我可能在这里遗漏了一些明显的东西,抱歉。谢谢你的帮助!

4

4 回答 4

2

如果您想运行另一个程序(甚至是您的其他项目或您上次登月时获得的一些不相关的执行人员),您现在应该以绝对或相对形式显示其他项目的路径,或者它应该在路径中。

因此,在您知道路径的系统中,您可以在源文件中对其进行硬编码,例如system( "C:\\path\\to\\my\\application.exe" )system( "..\\project2\\output.exe").

在另一个系统中,您有 3 个选项:

  • 通过将其路径添加到系统或project2.exe将其复制到已经在路径中的文件夹中,例如文件夹PATHPATHsystem

  • 通过使用设置将其复制到预定义文件夹(通常相对于project1.exe)中,例如在同一文件夹中或..\\server\\project2.exe

  • 创建一个配置文件,用户可以在其中放置可执行文件的project2.exe路径

于 2012-10-19T14:57:54.130 回答
1

您可以将项目 2 更改为构建为类库,这样您就可以在项目 1 中使用该 dll 了吗?

于 2012-10-19T14:33:32.697 回答
0

我认为迈克所说的是更好的方法,但我想你会在这里遇到同样的问题。您必须定义“项目依赖关系”。右键单击项目 1 -> 项目依赖项 -> 选择项目 2。现在项目 2 在项目 1 之前编译。(如果你决定这样做,你必须对库做同样的事情)。

如果要在编译后移动文件,可以在属性中定义构建后事件。(配置属性->构建事件->构建后事件)在那里您可以通过定义例如命令来复制文件xcopy /y "$(ProjectDir)Release/myexe.exe" "Some path"

于 2012-10-19T14:36:07.470 回答
0

除了 Mike Corcoran 提到的,你也可以使用任何外部程序,如果你把它放到系统的 PATH 变量中,然后让它通过system(const char *)函数执行

以这种方式驾驶它是可以通过的,但它不是正确的方式。例如,如果您的程序是交互式的,它会立即失败或出现 UB(未定义行为)。为避免这种情况,请将程序的逻辑与输入/输出分开,并在代码中解决它。

一些成功的 Linux 程序已经设法获得控制台应用程序的输出并将其显示在 GUI 上(让您在内部与之交互)。甚至 Visual Studio 也会这样做 - 您在编译应用程序时看到的输出(例如“成功构建”等)在命令行中执行,然后重定向它的输出。

祝你好运。

于 2012-10-19T14:39:28.750 回答