1.VS2012 C++生成DLL
这个过程仿照http://www.cnblogs.com/LCCRNblog/p/3625200.html创建DLL即可,暂时不用创建测试工程,因为下面有测试工程的创建。
注意:这个DLL工程建好后,需要额外添加以下工作:
在Test->添加->新建项->C++ ->代码模块定义文件(.def)->Source.def
在Source.def文件中写入如下内容(def中的注释在VS2012中必须去掉,此处是为了解释):
1 LIBRARY Test//dll文件名 2 EXPORTS //列出需要导出的函数名 3 Add @1 4 Subtract @2 5 Multiply @3 6 Divide @4
然后生成解决方案,到此dll文件创建ok!
2.C#使用C++生成的dll
这个工程仿照http://www.cnblogs.com/LCCRNblog/p/3691704.html中的第2步,使用dll创建一个UseDll工程;
在program .cs文件添加如下代码
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 using System.Runtime.InteropServices;//使用DllImport需要这个头文件 7 8 9 namespace UseDll 10 { 11 class Program 12 { 13 [DllImport(@"C:\Users\LC\Desktop\Test.dll")]//这种方式可以不用将dll文件放到工程目录,直接引用文件所在路径即可 14 public static extern double Add(double a,double b); 15 [DllImport("Test.dll")]//这种方式必须将dll文件放到工程目录bin\debug下 16 static extern double Subtract(double a, double b); 17 [DllImport("Test.dll")] 18 static extern double Multiply(double a, double b); 19 [DllImport("Test.dll")] 20 static extern double Divide(double a, double b); 21 22 static void Main(string[] args) 23 { 24 if (args.Length != 2) 25 { 26 27 Console.WriteLine("Usage: MyClient"); 28 29 return; 30 31 } 32 33 double result = Add(1.1, 2.2); 34 Console.WriteLine("The result of add is {0}",result); 35 36 double result1 = Subtract(1.1, 2.2); 37 Console.WriteLine("The result of Subtract is {0}", result1); 38 39 } 40 } 41 }
3.运行结果如下