以下例子是托管下的,非托管的要用DllImport
1.新建一个类型为类库的工程,默认的工程名为ClassLibrary1,我这里就不改了
2.添加函数:
public static void Hello()
{
Console.WriteLine("Hello World!");
}
3.如图:
4.选择菜单栏生成->生成ClassLibrary1,然后在bin目录下的debug目录下会生成ClassLibrary1.dll与ClassLibrary1.pdb
5.创建新的win32工程,系统默认命名为ConsoleApplication1,新建工程后,把第4步生成的dll和pdb文件拷贝进ConsoleApplication1工程的bin下的debug目录下
6.在解决方案下找到项目ConsoleApplication1项目,右键弹出菜单选择添加引用,把ClassLibrary1.dll添加到引用中去
7.在Program.cs中using ClassLibrary1命名空间
8.创建对象,调用静态函数 ClassLibrary1.Class1 cla = new Class1();Class1.Hello();
9.截图如下:
10.按F5运行结果如图
---------------------------------------------------------------------------------------------
当Hello函数的访问修饰符是internal时呢,由于internal是限定在ClassLibrary1程序集内的函数调用的,而ConsoleApplication1程序集怎么调用它呢,有个简单的方法:在ClassLibrary1程序集的AssemblyInfo.cs文件中添加[assembly: InternalsVisibleTo("ConsoleApplication1")],然后ConsoleApplication1又发现可以正常调用Hello函数了。
---------------------------------------------------------------------------------------------
另一种调用dll的方式是利用c#的反射,详细的demo看我的博客C#调用dll的简单demo(2)--反射