将一个exe嵌入到另一个exe中以构建单个exe?

时间:2016-04-16 19:39:42

标签: c++ visual-studio

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

我已将它们都带入一个VS 2015解决方案中。我是否可以通过将控制台应用程序转换为库来实现此目的?

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

1 个答案:

答案 0 :(得分:1)

是的,图书馆是正确的方法。如果你想要一个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,我不确定这是否可行。见这里:

How to compile C# application with C++ static library?