所以我有一个dll文件(用?编码).Net框架,我想知道其中的所有内容并使用它。但我不知道dll文件,我的意思是我知道它们是某种类型的库,但有人可以解释一下它是如何工作的吗?我如何知道函数dll包含并运行它们?请非常具体,因为我对dll完全失明。
答案 0 :(得分:2)
如果要创建自己的dll文件,则需要在Visual Studio中创建ClassLibrary应用程序。类库程序包含类,它们内部没有主函数。因此它永远不会创建.exe,它会在您编写代码后编译后创建.dll文件。
然后,您可以通过执行以下操作将此新创建的.dll文件添加到其他应用程序中:
“在解决方案资源管理器中,右键单击”引用“,选择”浏览“,然后浏览到新创建的dll”。一旦将它添加到您的引用列表中,您就可以转到您的编码并通过“using”语句添加该命名空间(.dll的命名空间),并且您可以访问该命名空间内可用的所有类。
希望这能给你一个共识。如果你不清楚,发表评论我们会让你更清楚地了解。
答案 1 :(得分:0)
我建议您退一步,学习一些.Net教程。
如果它真的是.Net DLL,那么你可以看到它在Visual Studio中导出的功能(有免费版)。 但是,如果您不知道DLL中的内容并且您只是拥有DLL文件,那么对您的使用非常有限,因为知道这些功能并不能告诉您它们是如何实现的。 “意味着被使用;为此,您需要与DLL一起使用的文档。
尽管如此:
运行Visual Studio
创建一个新项目(可能并不重要,可能是Windows Forms项目)
在解决方案资源管理器中,右键单击“引用”,选择“浏览”,然后浏览到DLL
现在,您可以在对象浏览器中查看它提供的功能。
答案 2 :(得分:0)
本机dll和托管dll之间存在差异(针对.NET编译)。如果你有一个为.NET框架编写的DLL,那么你可以使用反编译器工具来深入研究库。
ILSpy是一个免费的开源.NET反编译器。它甚至可以为您创建项目文件!试一试。
答案 3 :(得分:0)
在C,C ++(以及一般来说,“本机”代码)的世界中,DLL包含编译代码 - 但它们包含几乎没有信息 代码本身。您可以使用CFF Explorer之类的工具查看其中的内容。
每个DLL都包含一个“导出表”,它是其中可调用函数的列表。但是,它不包含有关如何调用这些函数的任何信息 - 该信息传统上包含在“标题”文件中(.h
,.hpp
,{{1等等);这些文件告诉你可以调用哪些函数。
函数头告诉你 如何调用某些函数(基于它们的名称),但它们并没有告诉你哪些 DLL包含它们。编译代码时,“链接器”会查找.hxx
文件,其中包含每个函数的名称及其驻留在中的DLL,并且它与程序中的两个匹配让你的可执行文件工作。
所有这些都在C#和.NET的世界中发生了变化。在那里,DLL具有关于它们自己的完整信息,因此在DLL中调用函数所需的唯一事情就是DLL本身。它们遵循略有不同的格式,您需要IL Disassembler(可能已在您的计算机上)等工具来查看其中的信息。 (Visual Studio的对象浏览器也可以这样做。)