在VS 2008中添加dll

时间:2010-03-27 11:38:03

标签: c# visual-studio dll

我想添加一些外部.dll库,例如使用C#。在Visual Studio 2008中使用glut32.dll(但这是唯一的例子)。

请告诉我,我应该一步一步做什么?

我有点困惑,因为我找到了很多添加dll文件的解决方案,但它们差别很大。

其中一些只使用代码添加dll,一些使用vs中的属性,添加引用,而在其他教程中则有关于在系统中注册dll的内容。

但如何把它们放在一起?

5 个答案:

答案 0 :(得分:3)

有各种类型的DLL,当您在C#项目中使用它们时,需要对它们进行不同的处理。主要有三种:

  • 包含非托管代码的DLL,设计用于由非托管代码编写的程序。您不能直接使用这样的DLL,也无法在C#项目中添加对它们的引用。必须使用P / Invoke,需要[DllImport]属性来声明DLL中的导出函数。 Glut32.dll就是这样一个DLL。您可以使用一个非常基本的测试来查看您是否有这样的DLL是在该DLL上运行Dumpbin.exe / exports。它列出了导出函数的名称。
  • 实现进程内COM服务器的DLL。它们也是用非托管代码编写的。 .NET对使用这些服务器有很好的支持,只要你有一个类型库。类型库通常嵌入在DLL中,Visual Studio期望在添加项目引用时通过COM选项卡或“浏览”选项卡找到它。一个非常基本的测试是Dumpbin.exe /再次导出,进程内COM服务器有4个导出函数。 DllGetClassObject函数是重要的函数。您可以使用OleView.exe,File + View Typelibrary查看DLL中嵌入的类型库。一个很好的例子是c:\ windows \ system32 \ shell32.dll
  • 由托管编译器创建的DLL。它们不包含其他类型的机器代码,它们包含IL代码和元数据。它是托管代码的本机DLL,只需使用Project + Add Reference添加引用,编译器就会自动知道DLL中可用的类型。

第一种是你在野外遇到很多DLL的那种。在非托管语言中为Windows编写了一个 lot 代码。它不是一种特别容易从托管代码中使用的DLL。例如,Glut32.dll有一个导出函数的 lot ,为每一个函数编写P / Invoke声明都很痛苦。

可用于帮助解决此问题的工具是SWIGPInvoke Interop Assistant。当DLL是用C ++语言编写时,前者是必需的。 C ++类不能直接从C#程序中使用,它们需要一个用C ++ / CLI语言编写的包装器。后一种工具对于用C语言编写的DLL很有用,包括Windows API。

请注意,这些工具通常不会为您提供干净且有保障的互操作解决方案。非托管代码中的声明是不明确的,您需要知道非托管函数的参数的确切语义才能选择正确的参数。得错了可能很难诊断,获得帮助的最佳地点是论坛或Q + A网站。喜欢stackoverflow.com

答案 1 :(得分:1)

如果你想引用你的dll

右键单击“引用”,然后选择“添加引用”。

或者看看

How to: Add and Remove References in Visual Studio (C#)

Adding a Reference to a C# or Visual Basic .NET Project

答案 2 :(得分:1)

您可以使用项目菜单下的“添加引用”对话框来执行此操作。只需转到COM选项卡并添加您的库。现在您可以验证类是否出现在对象浏览器

答案 3 :(得分:1)

右键单击解决方案资源管理器中的项目,然后选择添加引用,然后浏览并选择dll。

答案 4 :(得分:0)

  1. 在Solution Explorer中,右键单击项目节点,然后单击Add Reference。
  2. 在“添加引用”对话框中,选择指示要引用的组件类型的选项卡。
  3. 选择要引用的组件,然后单击“确定”。提示。