我正在嘗試使用鏈接器開關「/ 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'。希望它有幫助... –