簡體   English   中英

如何初始化msvcrt.dll?

[英]How to initialize msvcrt.dll?

如果我執行LoadLibrary(“ msvcrt.dll”),是否需要以某種方式初始化CRT? 以下文檔的第2節似乎說我同意,但是當我嘗試調用_CRT_INIT時,我只是收到_CRT_INIT的未定義符號錯誤:

http://support.microsoft.com/kb/94248

編輯:我應該說這是一個程序,用於動態加載它使用的所有dll,因此調用LoadLibrary(“ msvcrt.dll”)。

在其中調用DllMain() 如果依賴於C運行時,它將調用CRT_INIT。

但是更好的問題是,如果程序在msvcrt中使用某些東西,則無需顯式加載dll並對其進行初始化,那么為什么要這樣做呢?

如果您使用的是C ++,是否已將_CRT_INIT聲明為extern "C"

您是否嘗試過使用DUMPBIN實用工具( http://support.microsoft.com/kb/177429 -如果你沒有你的PATH了自己,你將不得不使用Visual Studio命令提示符我認為)與/EXPORTS切換以查看CRT DLL中可用的功能,只是仔細檢查一下?

如果您遇到困難,VS2005和更早的版本(可能是以后的版本……)隨附了運行時庫的源代碼。 對於VS2005,相對於VS安裝文件夾,該文件位於VC/crt/src 看起來_CRT_INIT是正確的名稱-請參閱crtdll.cdllcrt0.c ,它是一個C函數。

您不得調用_CRT_INIT(),而應調用CRT_INIT() (如果確實需要)

您引用的鏈接僅在“構建DLL使用CRT庫”時引用使用CRT_INIT(),即使如此,它也只是兩個選擇之一。 在大多數情況下,第一個可能更可取。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM