C#使用技巧--调用DLL

技巧

使用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文档 

时间: 2024-08-29 10:20:15

C#使用技巧--调用DLL的相关文章

在ASP文件中调用DLL

在ASP文件中调用DLL 动态联接库(DLL)是加快应用程序关键部分的执行速度的重要方法,但有一点恐怕大部分人都不知道,那就是在ASP文件也能通过调用DLL来加快服务器的执行速度,下面我简单的介绍一下在ASP文件调用DLL的步骤. 首先,必须得有DLL文件,本例是通过VB5.0创建ActiveX DLL文件,这个文件模拟了一个掷色子的过程. 在VB5.0的环境下,新建一个工程,并双击新建工程窗口中ActiveX DLL图标,VB将自动为项目添加一个类模块,并将该项目类型设置为ActiveX DL

在ASP文件调用DLL

动态联接库(DLL)是加快应用程序关键部分的执行速度的重要方法,但有一点恐怕大部分人都不知道,那就是在ASP文件也能通过调用DLL来加快服务器的执行速度,下面我简单的介绍一下在ASP文件调用DLL的步骤.    首先,必须得有DLL文件,本例是通过VB5.0创建ActiveX DLL文件,这个文件模拟了一个掷色子的过程.   在VB5.0的环境下,新建一个工程,并双击新建工程窗口中ActiveX DLL图标,VB将自动为项目添加一个类模块,并将该项目类型设置为ActiveX DLL.在属性窗口将

java中如何调用DLL方法

前段时间项目需要使用调用DLL来控制POS机外设,如钱箱和小票打印机.顾客显示屏等,于是,我便开始了java调用DLL中的方法的探索,事实上,网上的例子还是很多的,一些外部包的例子也有很多,但每个人的实际情况都有所不同,尽管只是一个很简单的调用,也花了我不少时间,在这里分享一下我的经验吧. 我是通过一个外部的JAR包来间接来获得DLL文件的句柄 的,它就是jacob了,这是java com brige的简写,呵呵, 这个名称起得非常形象吧,我用的版本是jacob 1.9的,你可以到它的官方网站去

在C#中如何创建和调用DLL

一.写在前面 C# 语言是一种简单但功能强大的编程语言,用于编写企业应用程序. C# 语言从C和C++语言演化而来,在语句.表达式和运算符方面使用了许多C++ 功能. C# 语言在类型安全性.版本转换.事件和垃圾回收等方面进行了相当大的改进和创新. C# 语言提供对常用API 样式(如 .NET 框架.COM.自动化和 C 样式 API 等)的访问. 和大多数程序员一样,你一定使用过DLL.也一定曾感受到它的带给你程序设计和编码上的好处.我想和大家探讨一个主题:如何利用C#创建和调用DLL(动态

jna-使用JNA或者JNI调用dll的问题

问题描述 使用JNA或者JNI调用dll的问题 我有一个dll文件,是厂家给的二次开发SDK,当我使用JNI调用的时候出现如下提示: System.loadLibery("Basic"); 提示:Can't load this .dll (machine code=0x0) on a IA 32-bit platform 但是当我使用JNA调用的时候提示找不到模块 dll文件我已经放在了system32.bin.项目路径下,程序能找到dll文件的,但是调用的时候不能调用,请问什么情况啊

jna dll-java 用jna调用dll库问题

问题描述 java 用jna调用dll库问题 昨天接手一个新项目,是关于java调用dll的,用jna实现,在我本机上运行成功,今天换了台电脑,就出现了EXception in main thread java.lang.UnsatisfiedLinkError UNable to load library..........请问有谁知道原因啊?急. 解决方案 dll已经放到system32 下了,还是一样出错 解决方案二: 目测是需要加载的dll位置不对 你再看看啦 解决方案三: 使用JNA通

请教JNative 调用DLL的最佳方式

问题描述 最近做一个项目需要跟硬件打交道,而硬件开发商只提供了一个DLL对硬件进行操作,于是我就用JNative对DLL中定义的函数进行调用,目前已知的调用方法是JNative native = new JNative("DELL Name","methodName");其它的构造忽略,在这种情况下,已创建了一个JNative的实例,并且要调用的方法也已跟这个实例绑定了,也就是说这个native只能调用指定的methodName,要想调用DLL中其它方法,还得重新实

动态电用dll出错-动态调用Dll出错,服务模式

问题描述 动态调用Dll出错,服务模式 用MFC开发一个服务程序,服务程序在应用模式下,动态调用dll正常,然而变成服务模式,会导致服务停止.请问这是怎么回事,请大神指点. 解决方案 主要是你服务运行情况下,进程权限会变高,同时不能直接访问一些用户目录等.服务运行在SESSION0,这个可能会导致你的DLL处理有问题.你需要检查一下DLL的内部代码逻辑 解决方案二: http://www.cnblogs.com/duanshuiliu/archive/2012/07/05/2577402.htm

调用dll文件,本应该创建该文件,但是在指定文件夹中并未显示出该文件

问题描述 调用dll文件,本应该创建该文件,但是在指定文件夹中并未显示出该文件 string a= "D://nihao.docx"; Char[] result = new Char[1024]; int check; check = CPPDLL.createCombinationFile(a.ToCharArray()); //创建该文件,成功返回0,运行时返回0,但在指定目录下并未出现该文件 check = CPPDLL.writeCombinationFile(a.ToCha