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,说句粗话!我其实也很想知道后面到底说了什么?????晕!

  • 相关阅读:
    Android悬浮窗拖动
    git提交错误问题如何解决?
    STM32单片机使用注意事项
    C指针说明
    cygwin注意事项
    关于百度地图的使用问题
    Android GIS osmdroid地图使用
    三个能力构建人生护城河
    浪潮之醒
    MingGW Posix VS Win32
  • 原文地址:https://www.cnblogs.com/macleo/p/582327.html
Copyright © 2011-2022 走看看