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编写
一个名为IlasLinkDl
l.dll的C++语言DLL
文件(编写这个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;
}
@H_
419_8@
然后我们新建
一个名为SLLinkDLl的Silverlight应用程序项目,在SLLinkDL
l.Web
项目中我们引用IlasLinkDl
l.dll
文件,新建
一个W
service.asmx的web服务
文件。在此
文件中编写以下
代码且
添加using Sy
stem.Runtime.Interop
services;的引用:
[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);
@H_
419_8@
最后在Silverlight程序中鼠标右键点击项目名--
添加服务引用--
添加http://localhost:4389/Wservice.asmx地址
即可。在MainPage.xam
l.cs
文件中写入以下关键
代码即可
调用Web
service中的Get
number
方法,通过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);
}
@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文件【实例源码下载】所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。