簡體   English   中英

什么是.exp文件和.lib文件,如何在我的C#項目中使用它們?

[英]What is a .exp file and .lib file, and how can I use them in my C# project?

我想下載用於我的C#項目的lame庫來轉換音頻。 我找到了這里使用的文件(libmp3lame)

當我下載檔案時,我找到了我正在尋找的.dll ,但是和他們一起,還有另外兩個文件:

  • libmp3lame.dll
  • libmp3lame.exp
  • libmp3lame.lib

我的問題:

  1. 1這些文件用於什么? 除了.dll文件之外,如何在我的項目中使用它們
  2. 這些文件給我帶來了什么好處.dll庫不能?

編輯:我覺得這些文件不適用於C#。 更多適用於C ++。 但無論哪種方式,這些文件是什么? 它們用於什么?

lib文件和exp文件都與本機代碼開發一起使用(例如C ++ / VB6 / Win32),並且在.NET世界中根本不使用。

lib文件包含可重用代碼或數據的集合,或者兩者都可以靜態鏈接並與現有代碼一起使用。 它們與DLL文件類似,不同之處在於,當您編譯程序時,DLL文件是動態鏈接的,而LIB文件是靜態鏈接的。

exp文件是導出文件。 有一些類似的元數據文件告訴編譯器DLL中的哪些函數已被導出,因此可以在靜態鏈接的程序中重用。 .NET程序不需要這個,因為每個.NET DLL都有一個稱為CLR Metadata部分的特殊部分。 .NET程序可以使用反射來提取此元數據信息並查看可用的方法。

如果你考慮在.NET中使用本機DLL的方法(p / invoke),你的p / invoke聲明有幾個部分:

  • 函數簽名(返回時間,參數類型)
  • DllImportAttribute指定找到函數的DLL及其在導出表中的鍵(錯位名稱或序號)

在C和C ++中,頭文件提供第一個,而以.lib結尾的導入庫提供第二個。

與p / invoke的DllImportAttribute ,在C和C ++中,調用約定與函數簽名一起存儲在頭文件中。

暫無
暫無

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

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