2014-12-03 101 views
3

我想下载用于C#项目中的lame库来转换音频。我找到的文件使用here (libmp3lame)什么是.exp文件和.lib文件,以及如何在C#项目中使用它们?

当我下载的档案文件,我发现.dll我一直在寻找,但与他们相处,有2个人文件:

  • libmp3lame.dll
  • 了libmp3lame .EXP
  • libmp3lame.lib

我的问题:

  1. 1这些文件用于什么?除了.dll档案
  2. 这些文件给我的.dll库不能提供什么好处,我怎样才能在我的项目中使用它们?

编辑:我有一种感觉,这些文件是不是在C#中使用。更多适用于C++。但无论哪种方式,这些文件是什么?它们用于什么?

+0

我相信那些是用C++编译的。不要以为C#甚至可以使用* exp *或* lib *文件(但从未尝试过)。 – TyCobb 2014-12-03 18:13:13

+0

@TyCobb是的,我有一种感觉,它不会与c#工作,但仍然,这些文件用于什么? – Krimson 2014-12-03 18:14:52

+1

http://msdn.microsoft.com/en-us/library/se8y7dcs.aspx | http://stackoverflow.com/questions/2727020/what-is-use-of-exp-and-what-is-the-difference-between-lib-and-dll – TyCobb 2014-12-03 18:18:22

回答

3

lib文件和exp文件与本地代码开发(例如C++/VB6/Win32)一起使用,在.NET世界中完全不使用。

lib文件包含可重复使用的代码或数据或两者的集合,这些代码或数据可以静态链接并与现有代码重复使用。它们与DLL文件类似,只是在编译程序时,DLL文件动态链接和LIB文件被静态链接的很大区别。

exp文件是导出文件。有一些类似的元数据文件告诉你的编译器DLL中的哪些函数已经导出,因此可以在你的静态链接程序中重用。 .NET程序不需要这样做,因为每个.NET DLL都有一个称为CLR元数据部分的特殊部分。 .NET程序可以使用反射来获取这些元数据信息,并查看哪些方法可用。

+0

有时'.lib'包含实际的代码和数据,有时它只是一个导入库(也可以是两者)。 – 2014-12-03 18:25:25

+0

是否有可能在'.dll'文件中捆绑'.lib'和'.exp'?我正在开发一个基于Web模板的C#程序。构建过程会生成这些额外的文件。如果我单独使用'.dll'文件(作为某个程序的插件),我会遇到关于编码的错误,但是如果我将3个文件放在同一个目录中,则该插件可以正常工作。那么,是否有可能将它们合并到'.dll'文件中?谢谢。 – 2016-09-01 11:04:49

+1

@ W.M。 - 在开发过程中使用'.lib'和'.exp'文件。当你分发你的应用程序时,不应该需要它们。如果你不需要它们,那么你可以在Visual Studio中创建一个后期构建规则,比如'del $(OutDir)\ $(ProjectName).lib'。 – Icemanind 2016-09-06 22:57:40

0

如果你想在.NET消耗原生DLL(P /调用)的方法,你的P/Invoke声明有以下几个部分:

  • 函数签名(返回时,参数类型)
  • DllImportAttribute指定其中函数是发现DLL和其在出口表键(错位的名称或序号)

在C和C++,头文件提供第一和导入库,在.lib结束,提供了t他第二。

与p/invoke的DllImportAttribute不同,在C和C++中,调用约定与函数签名一起存储在头文件中。

相关问题