<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="C# 调用 C/C++ DLL 教程一" id="card1">
<p> 游客</p><p>
标题:C# 调用 C/C++ DLL 教程一<br/>
正文:<br/>
直接从 C# 调用 DLL 导出若要声明一个方法使其具有来自 DLL 导出的实现，请执行下列操作：使用 C# 关键字 static 和 extern 声明方法。将 DllImport 属性附加到该方法。DllImport 属性允许您指定包含该方法的 DLL 的名称。通常的做法是用与导出的方法相同的名称命名 C# 方法，但也可以对 C# 方法使用不同的名称。还可以为方法的参数和返回值指定自定义封送处理信息，这将重写 .NET Framework 的默认封送处理。示例 1本示例显示如何使用 DllImport 属性通过调用 msvcrt.dll 中的 puts 输出消息。// PInvokeTest.csusing System;using System.Runtime.InteropServices;class PlatformInvokeTest{    [DllImport(&amp;quot;msvcrt.dll&amp;quot;)]    public static extern int puts(string c);    [DllImport(&amp;quot;msvcrt.dll&amp;quot;)]    internal static extern int _flushall();    public static void Main()     {        puts(&amp;quot;Test&amp;quot;);        _flushall();    }}输出Test代码讨论前面的示例显示了声明在非托管 DLL 中实现的 C# 方法的最低要求。PlatformInvokeTest.puts 方法用static 和 extern 修饰符声明并且具有 DllImport 属性，该属性使用默认名称 puts 通知编译器此实现来自msvcrt.dll。若要对 C# 方法使用不同的名称（如 putstring），则必须在 DllImport 属性中使用EntryPoint 选项，如下所示：[DllImport(&amp;quot;msvcrt<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=245&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=245&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=245&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=245&amp;Page=3">[3]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=245&amp;Page=7">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=245">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=245">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>