如何在 C# 中创建 DLL 库,然后在 C# 中使用它






4.66/5 (84投票s)
2005 年 3 月 14 日
2分钟阅读

736052

9652
一个简单易用的例子,展示了如何在 C 语言中创建 DLL 库,然后在 C# 中使用它。
引言
在花了一些时间试图实现这个简单的任务之后,我开始在互联网上搜索类似的代码示例。 我真的很惊讶地发现,所有例子都与我需要的略有不同。 最后,我意识到没有(至少在网上花了 30 分钟)一个简单易用的例子,所以我决定写这篇文章。
假设你已经知道什么是 DLL,让我们开始创建一个简单的 DLL。
- 启动 Visual Studio .NET。
- 转到文件->新建->项目。
- 选择 Visual C++ 项目,然后从“模板”中,选择“Win32 项目”。
- 给你的项目命名。 这将是你的最终 DLL 的名称(在我的例子中:TestLib)。
- 按“确定”。
- 从“应用程序类型”(“应用程序设置”选项卡)中选择“DLL”。
- 选中“空项目”(我们需要从头开始创建我们的项目,对吗?),然后按完成。
好的,现在我们应该将一个空的源文件附加到我们的空白项目。
- 启动解决方案资源管理器(如果未显示)。
- 右键单击“源文件”,添加->添加新项目,然后选择“C++ 文件”并为其命名。
- 按“打开”。
在打开的窗口中,输入以下代码
#include <stdio.h> extern "C" { __declspec(dllexport) void DisplayHelloFromDLL() { printf ("Hello from DLL !\n"); } }
请注意,__declspec(dllexport)
是一个强制性的前缀,它使 DLL 函数可以从外部应用程序访问。
extern “C”
(带括号)也非常重要,它表明括号内的所有代码都可以从“外部”访问。 尽管代码即使没有此语句也可以编译,但在运行时,你会收到一个非常令人不快的错误。 所以,不要忘记包含它。
构建此应用程序,你的 DLL 就可以使用了。
现在是时候创建一个将使用我们的 DLL 的应用程序了,正如主标题所解释的那样。 我们将使用 Microsoft 的 C# 创建这种类型的应用程序。
创建一个简单的 C# 应用程序
- 启动 Visual Studio .NET。
- 转到文件->新建->项目。
- 选择 Visual C# 项目。 从“模板”中,你可以选择“控制台应用程序”或“空项目”,就像上面描述的那样。
- 给你的应用程序命名。
- 按“确定”。
在指定的类中,插入以下两行
[DllImport("TestLib.dll")]
public static extern void DisplayHelloFromDLL ();
在 C# 中,关键字 extern
指示该方法是在外部实现的。
你的代码应该看起来像这样
using System;
using System.Runtime.InteropServices; // DLL support
class HelloWorld
{
[DllImport("TestLib.dll")]
public static extern void DisplayHelloFromDLL ();
static void Main ()
{
Console.WriteLine ("This is C# program");
DisplayHelloFromDLL ();
}
}
请注意,System.Runtime.InteropServices
是与 DLL 进行操作所必需的。
根据 MSDN
“
System.Runtime.InteropServices
命名空间提供了一组有用的类,用于从 .NET 访问 COM 对象和本机 API”
好的,现在构建此应用程序,然后将先前构建的 DLL 复制到当前应用程序的Debug/Release 目录中。 DLL 应该与你的主应用程序位于同一目录中。
现在启动应用程序。 如果你所做的一切都是正确的,你应该得到这样的结果
就是这样,真的很简单,不是吗?