将一个exe嵌入到另一个exe中,以便生成单个exe

Embed one exe into another in order to build a single exe?

本文关键字:exe 单个 另一个 一个      更新时间:2023-10-16

我有一个Winforms项目和一个控制台项目
我是作为一个外部进程从Winforms应用程序启动控制台应用程序的,但如果可能的话,我想将两者编译成一个exe。

我已将它们合并到一个单独的VS 2015解决方案中。我应该通过将控制台应用程序转换为库来实现这一点吗?

除了所有的引用、依赖项和链接器设置/路径之外,我将如何将命令行参数传递给,并从Winforms代码启动控制台应用程序。即跳转到控制台应用程序的入口点?到目前为止,解决方案构建良好。

是的,库是正确的方法。如果你想要一个exe,你会想把它链接成一个静态库。

将项目转换为库后,将"main"函数更改为使用不同的名称,例如,我将使用"foobar"。

如果您的Winforms项目也是C++,那么接下来创建一个h文件,该文件具有"foobar"函数的定义,例如:

int foobar(int argc, char *argv[]);

这将是您图书馆的外部接口。只需将其包括在内,就可以称之为:

const char *argv[] = {"progname", "arg1", "arg2"};
int result = foobar(3, argv);

当然,您也可以更改此函数以获取更方便的参数。请记住,默认情况下,argv[0]是程序名称,可能会被忽略。

如果您正在使用C#,或者不能直接包含.h,我不确定这是否可能。请参阅此处:

如何使用C++静态库编译C#应用程序?