2012-09-27 28 views
11

對於過去,我一直在試圖爲幾個應用程序創建插件。這些總是DLL文件,我已經按照各種應用程序的SDK文檔中的說明,但我從來沒有真的瞭解我在做什麼。 爲了解決這個問題,我試圖找到更多與編程的C++中的一些實際問題,包括dll文件處理,列表把我的頭存在的最優惠的條件的任何資源:一個關於dll編程的好教程的請求

  • dll文件,他們用了什麼,爲什麼?
  • 爲什麼要在libs上使用dll文件?
  • 那是.def文件的全部內容,是微軟唯一的東西嗎?
  • 什麼是清單文件?
  • ...

基本上,所有這一切可以在IDE(Visual Studio和XCxcode我)可以看到那些可愛的選擇 - 一個人如何瞭解它們是什麼,以及如何結合使用它們代碼比編寫'hello world'應用程序稍微複雜一點? 我想我正在尋找更多關於編程的「架構視圖」。迄今爲止,在我所有的C++書籍中發現的最多的是,總是有關於 source code > object code > linked w/ other obj code > executable 的部分,但是就它而言。

那麼,對於想要學習C++語法的人來說,是否有任何好書?我瞭解代碼,瞭解面向對象,瞭解STL。下一步我需要一本好書或資源。

謝謝! (對不起,如果這是一個模糊的問題,但它已經到了這一步)

+1

噢,我會推薦(imho事實標準)http://www.amazon.com/Patterns-Elements-Reusable-Object-Oriented-Software/dp/0201633612/ref=wl_it_dp_o_pC_nS_nC?ie=UTF8&colid=2E0Z6RTE6OPPQ&coliid= I3O54RFCDN6EQN爲「邁向世界的一步」。對於其他問題,我會回答一個問題:你知道靜態鏈接和動態鏈接嗎? – Najzero

+0

也許:)據我所知,動態鏈接是庫在運行時鏈接(即dll)和靜態鏈接在編譯時(lib文件)。 當然,這可能是錯誤的,即使它是正確的,但從系統架構的角度來看,我並沒有很好的理解這些東西。如果這甚至是正確的話:D –

回答

1

我可以引用你到以下參考。看看它們是否對你有任何用處。

  1. C++ DLL Programming
  2. Assemblies
+0

非常好,我會看看那些 - 非常感謝你。 –

4

有一個優良article在CodeProject在C DLL ++編程。

+0

看起來非常好,深入。謝謝!如果您知道任何涉及這些主題的書籍,請讓我知道:) –

9

dll文件,它們用於什麼目的?爲什麼?

dll文件與Microsoft Windows上的.exe文件相同(標題中的1位除外,表示它是DLL)。任何使用它的程序都會共享dll內存,從而節省內存。 Dll可以根據需要從RAM加載和卸載,從而節省內存。此外,他們可以單獨無需重新編譯 .exe文件被更新(您可能沒有可用的源代碼。)

爲什麼要使用的DLL文件在庫?

庫,也被稱爲靜態庫,需要EXE是每次變更時重新編譯文件,DLL沒有。 Dll 節省內存如果多個進程使用它們並且可以從集中位置更新所有程序。對於庫,你將不得不重新編譯並單獨替換每個.exe。 Dll是必須包含在exe文件中的額外文件,所以dll可能對互聯網發行不利

什麼是.def文件的全部內容,它是微軟唯一的東西嗎?

一個.def是一個編譯器特定的文件,告訴編譯器如何在內存中佈局dll(API)。它們可以在許多不同的編譯器中找到,包括gcc,儘管支持的功能和語法有所不同。

什麼是清單文件?

清單是Windows XP SP3的新增功能,它基本上告訴Windows它需要什麼版本的系統庫以及二進制是否需要管理員權限才能運行。 (請記住,DLL只是一個不同的exe文件)。我相信manfest也用於代碼簽名,驗證可執行文件是否合法。

+0

謝謝 - 非常有用的東西。現在,我需要的只是一本談論這些事情的書,所以我可以將它們放到更大的背景中。 –