[英]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.c
和dllcrt0.c
,它是一個C函數。
您不得調用_CRT_INIT(),而應調用CRT_INIT() (如果確實需要)
您引用的鏈接僅在“構建DLL時使用CRT庫”時引用使用CRT_INIT(),即使如此,它也只是兩個選擇之一。 在大多數情況下,第一個可能更可取。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.