互操作性——使用C/C++类型的非托管函数基础

本文介绍如何使用C#进行跨平台调用,包括通过msvcrt.dll和user32.dll实现文本输出和消息框显示的方法。此外,还介绍了如何使用dumpbin等工具查看DLL文件中的函数信息及函数重命名技巧。
摘要由CSDN通过智能技术生成

1、使用微软的C运行库msvcrt.dll提供的方法和Win32 API提供的函数进行平台调用
代码如下:

class  Program
{
     //微软的C运行库msvcrt.dll提供的puts方法
     [DllImport( "msvcrt.dll" )]
     static  extern  int  puts( string  msg);
 
     [DllImport( "msvcrt.dll" )]
     static  extern  int  _flushall();
 
     //Win32 API提供的函数进行平台调用
     [DllImport( "user32.dll" , EntryPoint = "MessageBox" )]
     public  static  extern  int  MessageBox( int  hwnd, string  lpText, string  lpCaption, int  wType);
 
     static  void  Main( string [] args)
     {
         puts( "hello world test!" );
         _flushall();
         MessageBox(0, "Hello world Test!" , "Title is here" , 0);
     }     
}

2、工具的使用。要查看DLL中包含的函数信息,可以用的工具有:Depends.exe、dumpbin.exe、PE Explorer等

使用dumpbin的形式如下:

 

 3、使用EntryPoint字段对函数进行重命名

[DllImport( "NativeLib.dll" ,EntryPoint= "PrintMsg" )]
public  static  extern  void  PrintMsgRename( string  msg);

PrintMsg必须与非托管的函数名一致,PrintMsgRename就是重命名的函数名。

 

 


本文转自Work Hard Work Smart博客园博客,原文链接:http://www.cnblogs.com/linlf03/archive/2011/09/24/2189422.html,如需转载请自行联系原作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值