2010-04-27 49 views
0

说我建立了一个名为App1的应用程序,在单个项目中有许多类。我决定要构建另一个名为App2的项目,并且我想使用这些相同的类,因此我决定将App1变成一个lib文件。我必须删除WinMain函数才能这样做,否则我可以离开它,编译器将忽略lib文件中的winMain。 ??你是否必须摆脱WinMain把项目变成一个lib

回答

1

特别是在Visual Studio中,您的静态库在任何情况下都不会造成麻烦。即使您可以将您的WinMain(或控制台main)添加到静态库中,但您在第二个项目中使用它的唯一机会是明确地将Linker-System-Subsystem设置为适当的类型。

在这种情况下,如果你符合程序(WinMain针对Windows子系统和main控制台),那么实际上你可以编译你的第二个项目,而不在它定义main常规和main想从你的库链接。

不过,在这种情况下,如果你声明mainALSO链接库中,当地main将有优先权,将被调用,从而使main库将被忽略。

因此,如果将函数导出到库中,实际上并没有什么区别,您可以保留它并且不会使用它,除非您做出前面提到的内容。

+0

好的,所以如果我确实使用链接器系统子系统。为了使它更加有效,我是否必须在WinMain中放置一个Method,并从第二个应用程序中覆盖它? – numerical25 2010-04-27 15:48:37

+0

嗯,首先,你实际上不能重写一些从静态库中已经编译过的函数中调用的方法(这是不能完成的,因为这个方法很可能被编译在同一个静态库中,是不是你可以重新定义它) – 2010-04-27 15:54:56

+0

如果我是你,我会为我的班级制作一个标题,让我们说'class.h'。现在你有一些方法可以让你更容易。首先,如果类实现(比如'class.cpp'文件)不是很大,我只需将它添加到我的新项目中(以便在一个项目中实际引用一个文件 - 例如,也可以将它们项目在一个文件夹中)。第二种方法是建立一个模板化的类(这样代码只能写在'.h'文件中),或者简单地把所有的代码写在'.h'文件中(坏,但适用于某些应用程序) – 2010-04-27 15:58:04

1

这样做没有任何意义。在他们自己的库项目中关闭构建.lib的类,并使用应用程序使用该库。

相关问题