我正在尝试使用链接器开关“/ entry”为visual C++可执行文件提供自己的入口点。相关的Microsoft文档详细介绍了如何在dll中手动初始化c运行时,但我无法掌握如何在我的exe中初始化它。我得到的最好的结果是我需要调用_CRT_init,但我不知道这是一个函数还是一个宏,或者它可能定义的位置,并且Visual Studio(和msbuild)不能识别标识符,所以那里没有提示。如何在exe中手动初始化c运行时?
这里的基本原理是我试图用谷歌测试单元测试一个可执行文件,它不会链接,因为main()发生冲突。 GTest FAQ中提到的两种方法并不是很通用,需要大量的重做才能实现大约30个遗留可执行文件。重命名每个单元测试应用程序的main()似乎是一个超级简单的方法,只要我能初始化c运行时即可。
Googletest不用于测试的可执行文件,它是用于测试 库。用于测试某个库的谷歌测试工具需要使用自己的可执行文件(具有自己的'main'功能)来执行此操作。 –
显然,我试图通过链接或编译从A代码到GTest可执行文件B,而不是通过从B运行A或任何您认为我正在执行的代码来测试链接或编译为任意可执行文件A的代码。请参阅[link](https://github.com/google/googletest/blob/master/googletest/docs/FAQ.md#how-do-i-test-a-file-that-defines-main)描述我面对的问题。我非常感谢你对你不知道答案的问题发表评论,并告诉提问者他们不知道他们在谈论什么。 – tyotypic
如果您可以访问运行时库的源代码,只是一个提示。 [MSDN](https://msdn.microsoft.com/en-us/library/abx4dbyh.aspx)说,初始化代码应该是'libcmt.lib'。希望它有帮助... –