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

  • 相关阅读:
    Flex 开源框架及工具 枫
    String.Format格式说明 枫
    HTTP服务器状态代码定义(Status Code Definitions) 枫
    像素对应表 枫
    js各种获取屏幕高度宽度 枫
    c#正则表达式帮助 枫
    使用模板引擎Trimpath 枫
    分布式缓存HttpRuntime.cache应用到单点登陆中_优化登陆 枫
    Query this 和 $(this) 的区别 枫
    css and js style 枫
  • 原文地址:https://www.cnblogs.com/macleo/p/582327.html
Copyright © 2011-2022 走看看