zoukankan      html  css  js  c++  java
  • 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:UsersLCDesktopTest.dll")]//这种方式可以不用将dll文件放到工程目录,直接引用文件所在路径即可
    14         public static extern double Add(double a,double b);
    15         [DllImport("Test.dll")]//这种方式必须将dll文件放到工程目录bindebug下
    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.运行结果如下

  • 相关阅读:
    backup archivelog delete input 与delete all input 区别
    RMAN LIST
    RMAN '异机异目录恢复'
    linux系统日志解析
    rman备份丢失控制文件,利用dbms_backup_restore恢复
    同义词的妙用
    上季度的老毛病又来了
    ORA20446,再次遭遇oracle bug
    修改RAC VIP IP
    数据库慢,原来与数据库无关
  • 原文地址:https://www.cnblogs.com/LCCRNblog/p/3693781.html
Copyright © 2011-2022 走看看