VS环境下C#调用C++生成的DLL

时间:2024-04-03 07:57:38

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.运行结果如下

VS2012环境下C#调用C++生成的DLL