crt

    3熱度

    1回答

    我一直對Microsoft的CRT有許多概念問題。對於任何項目,您必須編譯所有必需的庫以鏈接到相同版本的CRT。 第一個問題是當您的項目與CRT(/ MT)靜態鏈接時。然後所有的依賴庫也必須靜態鏈接自己的CRT。因此,每個庫都有自己的版本 - 例如 - malloc()。如果您去年在系統A上編譯了其中一個庫,則該CRT版本可能與您當前在另一個帶有Service Pack 3+的系統B上使用的版本不

    4熱度

    2回答

    我知道,當你編譯和鏈接C程序,你 C庫鏈接它 C運行時啓動代碼 我不知道如果我寫一個程序(在新語言,或只是C而不鏈接到此代碼),並直接將其鏈接到C代碼共享庫(比如zlib或gsl或fftw或其他),並省略C庫和C啓動代碼(假設我的程序將加載外部庫本身使用它的魔法),這將「只是工作」?我知道我在CRT啓動時有一些初始化代碼,所以我不知道如何讓我的應用程序本身不依賴於C庫而調用所需的函數:因此加載外部

    1熱度

    1回答

    Windows應用程序動態鏈接CRT。應用程序執行其部分代碼後,它將加載共享庫。共享庫與CRT靜態鏈接。 我的問題是: 如果應用程序在DLL的代碼做了一些修改爲「CRT狀態」(例如重新打開標準輸出的一些文件), 將這些變化是有效的? 謝謝

    3熱度

    2回答

    所以我明白CreateThread和CRT會導致內存泄漏,信號不起作用,並且應該使用_beginthread或_beginthreadex函數。當編寫一個應用程序時,這一切都很好,但是那些爲其他應用程序編寫dll等的應用程序(無論是普通的c dll,com對象,插件等)如何。沒有辦法保證如何創建一個調用DLL的線程,即使他們使用了__beginthread(ex),它很可能打賭他們有不同的CRT實

    1熱度

    2回答

    我正在建立一個應用程序依賴boost。我的應用程序輸出是最終被另一個客戶端應用程序使用的庫。我最近發現我在調試模式下使用/ MDd生成代碼(調試CRT庫),並且即使在調試模式下,客戶端應用程序也是針對發佈CRT構建的。因此,這可能會導致一些內存堆損壞錯誤。爲了證實這一點,我在釋放模式下測試了所有的東西,並且在這裏一切正常。 爲了解決這個問題,我在調試模式下構建了我的應用程序,針對CRT發佈庫...

    2熱度

    1回答

    我正在使用_set_invalid_parameter_handler重寫程序的默認行爲,當CRT函數獲取一個無效的參數,它將與0xc0000417(STATUS_INVALID_CRUNTIME_PARAMETER)崩潰。 這是我的處理程序: void my_invalid_parameter_handler( const wchar_t * expression, const

    0熱度

    2回答

    我們的應用程序分配幾何座標大的std :: vector <> 它必須是一個向量(意思是連續的),因爲它最終發送到OpenGL來繪製模型。 Open GL使用連續的數據。 在某些時候分配失敗,這意味着保留內存會拋出std :: bad_alloc異常。 但是現在有很多內存仍然可用。 問題是連續塊不能分配。 所以第一次兩個問題是: 有什麼辦法來控制,其中CRT分配內存的方式?或者一個碎片整理方法(瘋

    2熱度

    1回答

    當我需要在不同版本的MSVC中構建一些用於我的幾個項目中的第三方庫時,我通常會爲其每 MSVC版本和兩個調試版本配置。這就是推動力所在,而這正是我們在我們整個人生中爲我們所做的一切。 但是,我仍然沒有得到,爲什麼我不能像建立這個庫...什麼。我需要的只是函數原型和目標代碼,對吧?由於我靜態鏈接CRT,我沒有外部依賴。但是當我試圖將MSVC8下的Release版本與我在MSVC10下調試的項目鏈接起

    0熱度

    1回答

    可能重複: Why is runtime library a compiler option rather than a linker option? 我不清楚地瞭解爲什麼我在編譯階段選擇RTL 的類型? 例如,我創建了一個靜態庫A.lib與選項/ MD。 然後,我用選項/ MT創建了第二個靜態庫B.lib。 當我嘗試鏈接A.lib和B.lib到我的C.exe 我會得到鏈接錯誤。 但在編譯階段(創

    1熱度

    3回答

    我有第三方C庫,它可以在CRT錯誤崩潰。在這種情況下整個過程崩潰。有什麼辦法可以捕捉到所有CRT錯誤並防止進程終止。