【发布时间】:2020-08-31 10:33:15
【问题描述】:
我创建了一个静态库,其中包含一个必须调用的 WinMain() 函数。我正在寻找一些方法让 windows 调用这个函数。
原因是有一个没有主函数的解决方案,用户只是继承并填充一些类,如果他点击播放按钮,解决方案就会运行。
另外,如果您认为我的方法不是最好的,请告诉我您将如何负担得起。
【问题讨论】:
-
这应该“正常工作”。链接器将在传递给它的目标文件和静态库中搜索名为“WinMain”(装饰)的函数。显示您尝试了什么以及遇到了什么错误。
-
为什么静态
library应该有main? :S.. 当我将它与已经有一个主程序的程序链接时会发生什么?在 GCC 中,您可以拥有__attribute__((constructor))和__attribute__((destructor))但我认为它仅适用于动态库。不太确定。 -
@Brandon 这就是 CRT 库的工作方式,例如,为了在 它们 调用用户定义的
main之前“注入”它们的初始化代码。 -
@Brandon:许多平台/框架都是这样工作的,入口点在框架代码中,所有用户代码都是事件驱动的。事实上,在 C++ 中,“main()”或“WinMain()”函数甚至都不是真正的入口点,工具链会安排其构建全局对象的启动代码首先运行。
-
解决方案只是项目的容器。您将需要一个静态库项目和一个包含(链接)静态库的可执行项目。静态库不能单独执行...另外,您会丢失应该由用户填写的部分。
标签: c++ windows visual-studio static-libraries .lib