2009-12-17 12 views
0

我應該使用哪個標頭而不是如果我不希望我的程序與任何msvc * .dll鏈接,請使用它?如果我不希望我的程序與任何msvc * .dll鏈接,我應該使用哪些標題?

此刻我的應用程序使用:

  1. KERNEL32
  2. USER32
  3. SHELL32
  4. msvcp90
  5. msvcr90

我想擺脫底部的兩個文件。我不介意我是否必須重寫程序的某些方面。

因爲我知道,如果你在C代碼,然後鏈接它不會鏈接任何MSVC的

+0

標題不能確定鏈接的內容。出於好奇, – 2009-12-17 10:54:19

+0

爲什麼你喜歡這樣做?這與跨平臺問題有關嗎? – 2009-12-17 10:55:24

+0

我需要做一個非常非常輕量級的程序(我可以在C中完成,但我更喜歡VC++) – 2009-12-17 10:56:08

回答

1

我相信你必須改變CRT連接到你的程序的方式。我認爲你必須將C++ - > Code Generation-> Runtime-Library更改爲靜態版本。這是Visual Studio 2005的,不知道更新的版本。

+0

2k3,2k5和2k8中的所有內容都是相同的。 – sharptooth 2009-12-17 10:58:59

+0

102 kb O.o這是巨大的。有沒有辦法制作一個輕型的靜態鏈接程序? – 2009-12-17 12:14:42

+0

最好的選擇是打開鏈接器設置中的「進度消息」,並查看鏈接的對象和原因。這可能會讓您瞭解該計劃中要更改的內容。 – sharptooth 2009-12-17 12:51:25

0

這些庫包含了C++運行時 - 堆管理和其他的東西很難擺脫掉。

您可以靜態鏈接C++ - 使用「C++ - >代碼生成 - >運行時庫」設置。那麼你將不需要這些.dll文件。但是,這不是推薦的方法 - 如果在C++運行時發現漏洞,您將不得不重新編譯和重新安裝程序。

0

靜態鏈接是正確的答案。相關的一點建議是使用depends.exe來查看你的exe實際上在依賴dll中打了什麼函數。這些依賴關係可能是由於您明確使用或由於您未明確調用的CRT實現。

相關問題