我正在編譯一個DLL兩次(一次用於x86,一次用於x64),並且已將set/ENTRY設置爲「DllMain」。我正在使用/ MT運行時庫選項來靜態鏈接運行時庫。這做x86版本時都做工精細,但x64的構建失敗,這樣的:DLL鏈接器問題
error LNK2019: unresolved external symbol main referenced in function __tmainCRTStartup
{project directory}\LIBCMT.lib(crt0.obj)
爲什麼這項工作的x86版本,而不是64位建?有什麼我在這裏失蹤?
你爲什麼使用/ ENTRY? IIRC如果你使用的是標準的DllMain()函數,那麼運行時在沒有任何額外幫助的情況下調用它。 – 2010-09-09 22:42:42
如果我在我的x86 DLL中指定/ ENTRY,最終的大小超過50kb,那麼DLL的最終大小是5kb,如果我沒有設置/ ENTRY。 – 2010-09-09 22:48:39
通常,* real *入口點是由CRT提供的「假」DllMain取得的,用於初始化其內部數據結構(如此處所述:http://stackoverflow.com/questions/2674736/loading-a-dll-from- a-dll/2686042#2686042),所以你繞過它。尺寸縮小可能是由於CRT init代碼被刪除。你的dll正在使用一個非初始化的CRT,這非常糟糕。 – 2010-09-09 23:40:01