learun开发社区 - 力软快速开发平台官方论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 398|回复: 1

ASP.NET或者VB.NET开发自动备份数据库应用程序

  [复制链接]

4

主题

4

帖子

32

积分

新手上路

Rank: 1

积分
32
发表于 2019-4-10 11:34:31 | 显示全部楼层 |阅读模式

    使用C#时不免用调用别的DLL,如WIN32的API和自己以前做的DLL,
C#调用DLL很像VB,下面讨论的C#调用DLL的方式。
看看下面的例子,演示了怎么定义DLL函数接口
  1. public class Utility
  2. {
  3. [DllImport("kernel32",
  4. EntryPoint=”CreateDirectory”,
  5. CallingConvention=CallingConvention.StdCall]
  6. public static extern bool Create (string name);
  7. [DllImport("User32"]
  8. EntryPoint=”MessageBox”,
  9. CallingConvention=CallingConvention.StdCall]
  10. public static extern int MsgBox (string msg);
  11. }
  12. class MyClass
  13. {
  14. public static int Main
  15. {
  16. string myString;
  17. Console.Write("Enter your message: ");
  18. myString = Console.ReadLine;
  19. return Utility.MsgBox(myString);
  20. }
  21. }
复制代码

值得注意的是,缺省的调用规则(CallingConvention)是Stdcall,同Winapi,在
C++里是__stdcall的形式,函数入口(EntryPoint)缺省是同名,如CreateDirectory
的定义也可以为
[
  1. DllImport("kernel32")]
  2. static extern bool CreateDirectory(string name, SecurityAttributes sa);
  3. WIN32 API原型为
  4. BOOL CreateDirectory(
  5. LPCTSTR lpPathName, // directory name
  6. LPSECURITY_ATTRIBUTES lpSecurityAttributes // SD
  7. );
复制代码

在调用WIN32 API时注意那些类型的转换,如结构(struct)、指针(pointer),
有关各种语言之间类型转换和DllImport属性的详细信息可以参考SDK文档
回复

使用道具 举报

0

主题

11

帖子

199

积分

注册会员

Rank: 2

积分
199
发表于 2019-4-15 22:46:20 | 显示全部楼层
谢谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|learun开发社区 - 力软快速开发平台官方论坛 ( 沪ICP备14034717号 )

GMT+8, 2020-4-8 04:04 , Processed in 0.161380 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表