zoukankan      html  css  js  c++  java
  • C#使用技巧调用DLL(还是转贴哦!)

    使用C#时不免用调用别的DLL,如WIN32的API和自己以前做的DLL,
    C#调用DLL很像VB,下面讨论的C#调用DLL的方式。
    看看下面的例子,演示了怎么定义DLL函数接口
    ---------------------
    using System;
    using System.Runtime.InteropServices;

    public class Utility
    {
       [DllImport("kernel32",EntryPoint="CreateDirectory",CallingConvention=CallingConvention.StdCall)]
       public static extern bool Create (string name);
     
       [DllImport("User32",EntryPoint="MessageBox",CallingConvention=CallingConvention.StdCall)]
       public static extern int MsgBox (string msg);
    }
     
    class MyClass
    {
       public static int Main()
       {
          string myString;
          Console.Write("Enter your message: ");
          myString = Console.ReadLine();
          return Utility.MsgBox(myString);
       }

    ------------------------------------------  
    值得注意的是,缺省的调用规则(CallingConvention)是Stdcall,同Winapi,在
    C++里是__stdcall的形式,函数入口(EntryPoint)缺省是同名,如CreateDirectory
    的定义也可以为
       [DllImport("kernel32")]
       static extern bool CreateDirectory(string name, SecurityAttributes sa);
      
    WIN32 API原型为
    BOOL CreateDirectory(
      LPCTSTR lpPathName,                         // directory name
      LPSECURITY_ATTRIBUTES lpSecurityAttributes  // SD
    );
      
    在调用WIN32 API时注意那些类型的转换,如结构(struct)、指针(pointer),

    有关各种语言之间类型转换和DllImport属性的详细信息可以参考S


    ------------------------------------------------
    转贴者的话:
    1、这个实例,我csc了,执行时报错!我不知道原因!有人知道了,给我指点一下!不胜感激哦!^_^!
    2、不是我不想转完,只是没有办法,人家的文章就到此为止了!!^_^!
    不过至少为我了解调用DLLImport的一点内容,只是我也感到可惜的是:“DllImport属性的详细信息可以参考S”,居然没有了?NND,说句粗话!我其实也很想知道后面到底说了什么?????晕!

  • 相关阅读:
    WPF ViewModel 调用任意前台控件的方法
    xxxx
    modelsim一些error(warning)的原因
    [verilog] inout端口处理
    [c语言]指针数组和数组指针
    电机控制术语
    MAC和PHY关系
    IAR map文件说明
    [corterm3]汇编语法
    TI 2802x系列中断系统及应用
  • 原文地址:https://www.cnblogs.com/macleo/p/582327.html
Copyright © 2011-2022 走看看