silverlight   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Silverlight使用WebService调用C++,Delphi编写的DLL文件【实例源码下载】大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

在Silverlight程序(非Out of Browser模式)中是无法直接调用DLL的,但是很多的计算或者其他应用程序的调用中我们需要用到DLL的加载。比如调用DLL来识别身份证读卡器传输过来的信号,比如要和某Delph编写的程序数据通讯等等。本文将简单的自写一个dll文件,然后通过调用此DLL自定义的一个GetNum函数计算传入得两个参数之和。         首先我们使用VS2010编

在Silverlight程序(非Out of Browser模式)中是无法直接调用DLL的,但是很多的计算或者其他应用程序的调用中我们需要用到DLL的加载。比如调用DLL来识别身份证读卡器传输过来的信号,比如要和某Delph编写的程序数据通讯等等。本文将简单的自写一个DLL文件,然后通过调用此DLL自定义一个GetNum函数计算传入得两个参数之和。

@H_419_8@         首先我们使用VS2010编写一个名为IlasLinkDll.dll的C++语言DLL文件(编写这个DLL的源码也会在本章结尾附带),其内部的关键代码如下:

Silverlight使用WebService调用C++,Delphi编写的DLL文件【实例源码下载】

  
  
#ifdef MYLIBDLL
#define MYLIBDLL extern "C" _declspec(dllimport)
#else
#define MYLIBDLL extern "C" _declspec(dllexport)
#endif @H_780_29@mYLIBDLL double GetNum( double Anum, double Bnum);

double Bnum)
{

return Anum + Bnum;
}

Silverlight使用WebService调用C++,Delphi编写的DLL文件【实例源码下载】

@H_419_8@         然后我们新建一个名为SLLinkDLl的Silverlight应用程序项目,在SLLinkDLl.Web项目中我们引用IlasLinkDll.dll文件,新建一个Wservice.asmx的web服务文件。在此文件中编写以下代码添加using System.Runtime.Interopservices;的引用:

[WebMethod]
public String Getnumber( double A,255)">double B)
{
return GetNum(A,B).ToString() ;

}
/// <sumMary>
获取到DLL的值
</sumMary> <param name="Anumber"> 数字A </param> <param name="Bnumber"> 数字B <returns></returns>
[DllImport( " IlasLinkDll.dll " ,CharSet = CharSet.Ansi,EntryPoint = GetNum :1.5; color:rgb(128,ExactSpelling = false )]
static extern double Anumber,255)">double Bnumber);

Silverlight使用WebService调用C++,Delphi编写的DLL文件【实例源码下载】

@H_419_8@         最后在Silverlight程序中鼠标右键点击项目名--添加服务引用--添加http://localhost:4389/Wservice.asmx地址即可。在MainPage.xaml.cs文件中写入以下关键代码即可调用Webservice中的Getnumber方法,通过DLL计算两个数字之间的和,返回显示出来。

public MainPage()
{
InitializeComponent();
// 创建webservice代理类的对象实例
WserviceSoapClient sclient = new WserviceSoapClient();
调用Getnumber方法,并传递两个参数
sclient.GetnumberAsync( 500 , 23 );
sclient.GetnumberCompleted
+= new EventHandler < GetnumberCompletedEventArgs > (sclient_GetnumberCompleted);

}

void sclient_GetnumberCompleted( object sender,GetnumberCompletedEventArgs E)
{
结果将为523
messageBox.Show(e.Result);
}

Silverlight使用WebService调用C++,Delphi编写的DLL文件【实例源码下载】

@H_419_8@         通过上面的代码我们传入500和23两个参数。然后得到结果为523的弹出窗口。下面我们看一下加载DLL的DllImport特性的参数使用方法

[DllImport( false )]

   a、CallingConvention 参数指示入口点的调用约定。如果未指定 CallingConvention,则使用认值 CallingConvention.Winapi。
   b、CharSet 参数指示用在入口点中的字符集。如果未指定 CharSet,则使用认值 CharSet.Auto。
   c、EntryPoint 参数给出 dll 中入口点的名称。如果未指定 EntryPoint,则使用方法本身的名称
   d、ExactSpelling 参数指示 EntryPoint 是否必须与指示的入口点的拼写完全匹配。如果未指定 ExactSpelling,则使用认值
false
   e、PreserveSig 参数指示方法的签名应当被保留还是被转换。当签名被转换时,它被转换为一个具有 HRESULT 返回值和该返回值的一个名为 retval 的附加输出参数的签名。如果未指定 PreserveSig,则使用认值
true
   f、SetLastError 参数指示方法是否保留 Win32
上一错误 " 。如果未指定 SetLastError,则使用认值 false

Silverlight使用WebService调用C++,Delphi编写的DLL文件【实例源码下载】

大佬总结

以上是大佬教程为你收集整理的Silverlight使用WebService调用C++,Delphi编写的DLL文件【实例源码下载】全部内容,希望文章能够帮你解决Silverlight使用WebService调用C++,Delphi编写的DLL文件【实例源码下载】所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。