我希望用户能够将我使用 Qt 的应用程序重新链接到他们自己的 Qt 版本,而不必被迫重建所有源代码。例如,这可以用于 LGPL 合规性。为此,我需要为所有源提供目标文件。为了方便起见,我使用 qmake 将项目内部划分为:
一个静态库项目,其中包含所有源文件的对象,包括具有
int main(int, char**)
.将上面的静态库与 Qt 链接的应用程序项目。Qt 可以是静态库或动态库。该项目没有源文件。
然后我分发静态库 (.lib) 和应用程序项目文件,以便任何人都可以使用他们自己的 Qt 版本重新链接应用程序,以他们喜欢的任何方式(静态链接 Qt 或动态链接 Qt),只要他们有MSVC 的必要版本。
我正在 MSVC 2008 (Qt 4) 和 2012 (Qt 5) 下进行构建。makefile 由 qmake 生成。
问题是在构建应用程序项目时链接失败。
LINK : error LNK2001: unresolved external symbol _WinMainCRTStartup
只要我将一个虚拟源文件添加dummy.cpp
到应用程序项目中,链接就会成功。有没有办法避免这种解决方法?
//dummy.cpp (this is the entire source)
int dummy;