使用WinMain()连接两个带有main()的程序

时间:2010-10-07 13:57:26

标签: c++ visual-studio-2008 windows-xp

我想将两个程序合并为一个可执行文件。一个是开源程序,它有一个相当复杂的项目文件,另一个是我的一个结构简单得多。由于项目文件的相对复杂性,我觉得从开源项目开始并修改它以包含我的源文件是最有意义的。

我的意图是我的程序应该控制并将另一个视为实用函数的集合。

我注意到开源程序有一个名为“main()”的函数,而我的函数有一个“WinMain()”。据推测,我必须先告诉编译器调用我的WinMain()。我该怎么做?

在合并过程中还有其他我应该注意的事项吗?

编辑: 两个程序都是C ++,而不是C.

编辑:开源程序做的很少。

编辑:我想知道的关键是我必须修改项目设置中的某些内容,说“这是一个使用WinMain()的Windows程序而不是控制台(?)程序使用main()“或者编译器会以某种方式解决这个问题。

更新:联合计划现已开始运行。

3 个答案:

答案 0 :(得分:2)

如果你的程序有WinMain(),那么它可能是一个Windows程序,而另一个是命令行应用程序。根据原始应用实际执行的操作,这可能会使它们难以合并。例如。如果其他应用程序广泛使用标准输入/输出,则将其转换为Windows应用程序具有挑战性。但是,如果它只是一堆没有副作用的实用方法,您可以简单地将代码添加到项目中并开始使用它。

您必须设置项目以生成Windows可执行文件,然后链接器将自动安排对WinMain()函数的调用。

答案 1 :(得分:1)

如果命令行程序的main函数需要初始化,您需要重命名它并从WinMain调用它。如果没有,您可以完全删除它。 <{1}} ... #if ... #else在任何一种情况下都会很好。

重要的是,链接器不再有一个名为#endif的函数。

您在移植过程中可能会遇到与main vs main无直接关系的

Peter's answer addresses some other problems

答案 2 :(得分:0)

main表示你有一个C或C ++程序,WinMain表示你有一个Windows程序,并且这两个程序不能轻易加入。

我建议您从Visual Studio中的Windows程序开始,并添加您需要的方法/类/函数以及其他源文件中的方法/类/函数。