C#使用技巧--调用DLL

转载 2006年05月30日 16:48:00
 
使用C#时不免用调用别的DLL,如WIN32的API和自己以前做的DLL,
C#调用DLL很像VB,下面讨论的C#调用DLL的方式。
看看下面的例子,演示了怎么定义DLL函数接口
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属性的详细信息可以参考SDK文档 

相关文章推荐

【转】把DLL文件打包进EXE的技巧(C#)

 引用自:http://apps.hi.baidu.com/share/detail/18543708 用VS2005建立一个windows项目,取名test引用dll文件编写代码,正常引用dll里的...
  • windxxf
  • windxxf
  • 2011年06月16日 13:22
  • 787

C#将dll打包到程序中技巧之一

废话就不多说了,直接进入主题吧 用VS2005建立一个windows项目,取名test 引用dll文件 编写代码,正常引用dll里的类库, 同时在test项目添加资源文件(该文...

C#将dll打包到程序中技巧之二

namespace TestLibrary1 { public class Test { public void Point() { ...

在VS2010上使用C#调用非托管C++生成的DLL文件(图文讲解)

http://www.cnblogs.com/liping13599168/archive/2011/03/31/2000320.html 在VS2010上使用C#调用非托管C++生成的...

在VS2010上使用C#调用非托管C++生成的DLL文件(图文讲解)

在VS2010上使用C#调用非托管C++生成的DLL文件(图文讲解) 原文链接: http://www.cnblogs.com/liping13599168/archive/2011/03/31/...

在visual Studio上使用C#调用非托管C++生成的DLL文件(图文讲解)

背景       在项目过程中,有时候你需要调用非C#编写的DLL文件,尤其在使用一些第三方通讯组件的时候,通过C#来开发应用软件时,就需要利用DllImport特性进行方法调用。本篇文章将引导...
  • huyu107
  • huyu107
  • 2016年07月20日 15:05
  • 217

VS2010使用C#调用C++编写的dll,在其他电脑上无法运行的解决办法

上学期帮SF做项目,写个可视化大开口板应力集中系数和应力集中点位置的程序。要求计算部分必须用C++或者Fortran来写,方便SF继续开发,但又为了写图形界面的时候图省事,最后决定算法部分用C++来写...

在VS2010上使用C#调用非托管C++生成的DLL文件(图文讲解)

背景       在项目过程中,有时候你需要调用非C#编写的DLL文件,尤其在使用一些第三方通讯组件的时候,通过C#来开发应用软件时,就需要利用DllImport特性进行方法调用。本篇文章将引导...

在VS2010上使用C#调用非托管C++生成的DLL文件(图文讲解)

在VS2010上使用C#调用非托管C++生成的DLL文件(图文讲解)

在VS2010上使用C#调用非托管C++生成的DLL文件(图文讲解)

 在VS2010上使用C#调用非托管C++生成的DLL文件(图文讲解) 背景       在项目过程中,有时候你需要调用非C#编写的DLL文件,尤其在使用一些第三方通讯组件的时候...
  • CSDNwei
  • CSDNwei
  • 2015年12月23日 09:58
  • 1365
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#使用技巧--调用DLL
举报原因:
原因补充:

(最多只允许输入30个字)