VS2012環境下C#調用C++生成的DLL


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.運行結果如下


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM