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 <num1> <num2>"); 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.運行結果如下