我有一个Winforms项目和一个控制台项目 我从Winforms应用程序启动控制台应用程序作为外部进程,但是如果可能的话,我想将它们编译成单个exe。
我已将它们都带入一个VS 2015解决方案中。我是否可以通过将控制台应用程序转换为库来实现此目的?
除了所有引用,依赖项和链接器设置/路径之外,我如何将命令行参数传递给Winforms代码并从Winforms代码启动控制台应用程序。即跳转到控制台应用程序的入口点?到目前为止,解决方案构建良好。
答案 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,我不确定这是否可行。见这里: