zoukankan      html  css  js  c++  java
  • C#中调用C++的DLL文件

    这几天公司需要做一个通过刷卡来控制用户上网的功能。我先扩展了windows DDK的passthru源码包,生成了一个NDIS中间层驱动文件。接下来就要写程序控制这个驱动,以达到上网控制的目的。

    控制程序是用C++代码完成的,先编译成动态链接库(dll)文件。编译的过程就不再废话了,网上很多。这里提示一点就是开始建立MFC dll工程的时候,应该选择“动态链接库和MFC静态链接”这一项,这样编译出来的dll文件是不需要引入库文件(.lib)的。

    生成好后,得到dll文件(如ForbidNetDll.dll),写一个简单的C#类,例如前面的dll文件导出函数为int forbidNet(int flag); C#类应该这样写:

    C#代码  收藏代码
    1. // NetControl.cs  
    2. using System;  
    3. using System.Collections.Generic;  
    4. using System.Text;  
    5. using System.Runtime.InteropServices; // 这句必不可少  
    6.   
    7. namespace NetControl {  
    8.     public class NetControl {  
    9.         [DllImport("ForbidNetDll.dll", EntryPoint = "forbidNet", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]  
    10.         public static extern int forbidNet(int flag);  
    11.     }  
    12. }  

    然后把NetControl.cs和ForbidNetDll.dll一同拷贝到vs环境的目录下,用csc命令编译:

    C#代码  收藏代码
    1. csc /t:library /out:NetControl.dll NetControl.cs  

    这样就生成了NetControl.dll这个C#可以直接引用的dll文件。当然最后运行的时候ForbidNetDll.dll也得拷贝到工程目录下。因为NetControl.dll运行的时候,执行方法forbidNet时需要去ForbidNetDll.dll中找。

    最后就是写测试程序测试我们的NetControl.dll了。

  • 相关阅读:
    javascript变量
    javascript数据类型
    javascript基本语法
    javascript用法
    javascript简介
    js 随机生成颜色值
    JS 判断传入的变量类型是否是Array
    swiper2 swiper-slide 之间的间距调整
    IE9以及以下不支持jquery ajax跨域问题
    HBuilder只提示html 不提示js
  • 原文地址:https://www.cnblogs.com/lizi/p/2362659.html
Copyright © 2011-2022 走看看