我想下载用于我的C#项目的lame库来转换音频。我找到了要使用here (libmp3lame)
的文件当我下载档案时,我找到了我正在寻找的.dll
,但除此之外还有另外两个档案:
我的问题:
.dll
文件.dll
库不能? 编辑:我觉得这些文件不适用于C#。更多适用于C ++。但无论哪种方式,这些文件是什么?它们用于什么?
答案 0 :(得分:3)
lib
个文件和exp
文件都与本机代码开发一起使用(例如C ++ / VB6 / Win32),并且在.NET世界中根本不使用。
lib
个文件包含可重复使用的代码或数据的集合,或者两者都可以静态链接并与现有代码一起使用。它们与DLL
文件类似,不同之处在于,当您编译程序时,DLL文件是动态链接的,而LIB
文件是静态链接的。
exp
个文件是导出文件。有一些类似的元数据文件告诉编译器DLL中的哪些函数已被导出,因此可以在静态链接的程序中重用。 .NET程序不需要这个,因为每个.NET DLL都有一个称为CLR Metadata部分的特殊部分。 .NET程序可以使用反射来提取此元数据信息并查看可用的方法。
答案 1 :(得分:0)
如果你考虑在.NET中使用本机DLL的方法(p / invoke),你的p / invoke声明有几个部分:
DllImportAttribute
指定找到函数的DLL及其在导出表中的键(错位名称或序号)在C和C ++中,头文件提供第一个,导入库以.lib
结尾,提供第二个。
与p / invoke的DllImportAttribute
不同,在C和C ++中,调用约定与头文件中的函数签名一起存储。