c++ 黑盒调用delphi 写的com库 [问题点数:300分,结帖人gouyanfen]

Bbs5
本版专家分:3621
Blank
金牌 2019年6月 总版技术专家分月排行榜第一
Blank
红花 2019年6月 C/C++大版内专家分月排行榜第一
结帖率 100%
Bbs5
本版专家分:3621
Blank
金牌 2019年6月 总版技术专家分月排行榜第一
Blank
红花 2019年6月 C/C++大版内专家分月排行榜第一
Bbs5
本版专家分:2341
Blank
GitHub 绑定GitHub第三方账户获取
Bbs6
本版专家分:6659
Bbs6
本版专家分:6860
Blank
GitHub 绑定GitHub第三方账户获取
Blank
红花 2019年7月 C/C++大版内专家分月排行榜第一
Blank
黄花 2019年6月 C/C++大版内专家分月排行榜第二
2019年4月 C/C++大版内专家分月排行榜第二
2019年3月 C/C++大版内专家分月排行榜第二
2019年2月 C/C++大版内专家分月排行榜第二
Bbs5
本版专家分:3621
Blank
金牌 2019年6月 总版技术专家分月排行榜第一
Blank
红花 2019年6月 C/C++大版内专家分月排行榜第一
调用COM出现问题,求救.
VC7,好像是 DECLARE_PROTECT_FINAL_CONSTRUCT() 没定义.rnrn错误报告指在这一行.rnDECLARE_PROTECT_FINAL_CONSTRUCT()rn这行本身不是这个工程里的文件的,是COM<em>库</em>那个工程里的一个头文件里的.rnrn错误报告内容是rnf:\proje<em>c</em>ts\amyayl\A<em>c</em><em>c</em>essControl.h(46): error C2146: 语法错误 : 缺少“;”(在标识符“HRESULT”的前面)rnf:\proje<em>c</em>ts\amyayl\A<em>c</em><em>c</em>essControl.h(46): warning C4183: “DECLARE_PROTECT_FINAL_CONSTRUCT”: 缺少返回类型;假定为返回“int”的成员函数rnrnrn我添加的代码只有rn#in<em>c</em>lude "F:\\proje<em>c</em>ts\\amyayl\\_amyayl_i.<em>c</em>"rn#in<em>c</em>lude "F:\\proje<em>c</em>ts\\amyayl\\A<em>c</em><em>c</em>essControl.h"rnrn...rn::CoInitializeEx(0,0);rnIA<em>c</em><em>c</em>essControl *pi=NULL;rnHRESULT hre=::CoCreateInstan<em>c</em>e( CLSID_CA<em>c</em><em>c</em>essControl,NULL,CLSCTX_INPROC_SERVER,IID_IA<em>c</em><em>c</em>essControl,reinterpret_<em>c</em>ast(&pi));rn::CoUninitialize();rn
调用com时的问题
初用COM,有个问题不解: 我在用MFC<em>调用</em>别人的COM<em>库</em>时,不会<em>调用</em>dll中的事件(如:OnMouseDown)rnrn具体如下:rn.....rn#in<em>c</em>lude "GxProxy.h" rn#in<em>c</em>lude "GxProxy.<em>c</em>"rn//上面的.h和.<em>c</em>文件是注册GxProxy.dll后用 OLE/COM Obje<em>c</em>t Viewer导出的rn.......rnHRESULT hrGxProxy;rnIGxProxy *pGxProxy;rn.......rnVARIANT varUserIp;rnVARIANT varUserName;rnVARIANT varUserPass;rnhrGxProxy = CoInitialize(0);rnif(SUCCEEDED(hrGxProxy))rn rn hrGxProxy = CoCreateInstan<em>c</em>e( CLSID_GxProxy,NULL,rn CLSCTX_INPROC_SERVER, rn IID_IGxProxy,(void**) &pGxProxy);rn pGxProxy->CreateInstan<em>c</em>e();rn ......rn pGxProxy->LogOn(varUserIP,varUserName,varUserPass);rn //问题在这了,上面是一个登陆的函数,当登陆成功后会产生两个事件,rn //OnLogOn 和 OnEntity 这两事件该如何相应???rn ......rnrn//下面是GxProxy.h 文件的部分内容.rn......rnEXTERN_C <em>c</em>onst IID IID_IGxProxy;rn#if defined(__<em>c</em>plusplus) && !defined(CINTERFACE)rnrn MIDL_INTERFACE("7798E5EB-C10B-40CF-A22C-515F10E03DFA")rn IGxProxy : publi<em>c</em> IDispat<em>c</em>hrn rn publi<em>c</em>:rn virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE LogOn( rn /* [in] */ VARIANT strUserIp,rn /* [in] */ VARIANT strUserName,rn /* [in] */ VARIANT strPassword) = 0;rn......rnrnEXTERN_C <em>c</em>onst IID IID_IGxProxyNotify;rn#if defined(__<em>c</em>plusplus) && !defined(CINTERFACE)rnrn MIDL_INTERFACE("54F9DFF6-6296-4FBD-986E-FF0788E17EAE")rn IGxProxyNotify : publi<em>c</em> IDispat<em>c</em>hrn rn publi<em>c</em>:rn virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE OnLogon( void) = 0;rnrn virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE OnLogoff( void) = 0;rnrn virtual /* [helpstring][id] */ HRESULT STDMETHODCALLTYPE OnEntity(rn /* [in] */ VARIANT bstrGuidEntity,rn /* [in] */ VARIANT bstrEntityName) = 0;rn......rnrnrn帮帮忙,很急的问题 .都想了好久了 @_@rn
delphi调用C的DLL问题
C的接口:unsigned <em>c</em>har* GetData(unsigned <em>c</em>har* ip)rnrn我在DELPHI<em>调用</em>的代码:rnrnunit Unit1;rnrninterfa<em>c</em>ernrnusesrn Windows, Messages, SysUtils, Variants, Classes, Graphi<em>c</em>s, Controls, Forms,rn Dialogs, StdCtrls;rnrntypern TForm1 = <em>c</em>lass(TForm)rn Button1: TButton;rn pro<em>c</em>edure Button1Cli<em>c</em>k(Sender: TObje<em>c</em>t);rn privatern Private de<em>c</em>larations rn publi<em>c</em>rn Publi<em>c</em> de<em>c</em>larations rn end;rnrnvarrn Form1: TForm1;rnrnimplementationrnrn$R *.dfmrnFun<em>c</em>tion GetTankTemp(StrIP:PChar):PChar;std<em>c</em>all;external 'GetTankTemp.dll';rnrnpro<em>c</em>edure TForm1.Button1Cli<em>c</em>k(Sender: TObje<em>c</em>t);rnvarrn ip,temp : p<em>c</em>har;rnbeginrn ip := '10.120.1.10';rn Temp:= GetTankTemp(ip);rn showmessage(temp);rnend;rnrnend.rnrn返回一直是空,应该是有值的,请大家帮忙是哪个地方<em>写</em>错了,谢谢...rnrnrn
C 的dll ,delphi 调用的问题
有一DLL接口函数说明rnrn// SmartV.dllrn// 本DLL目的就是从SmartV监控系统中获取设备信息rnrn// DLL启用函数rnSMARTV_API void __std<em>c</em>all SLT_ClientStart();rnrn// DLL停止函数rnSMARTV_API void __std<em>c</em>all SLT_ClientStop();rnrn// 获取设备信息函数rn// 参数:rn// <em>c</em>har *serverip :SmartV目录服务器IP地址,譬如:"192.168.0.1"rn// <em>c</em>har *user : 登陆SmartV目录服务器的用户名,请与SmartV监控系统管理员联系获取;rn// <em>c</em>har *password : 登陆SmartV目录服务器的密码,请与SmartV监控系统管理员联系获取;rn// int se<em>c</em>ond :搜索设备等待时间,>=10 (秒);rn// void(WINAPI *notify)(unsigned long devid,<em>c</em>har *devname,<em>c</em>har *svrip) :rn// 设备信息处理回调函数,在里面做相应的处理,譬如把该设备的信息保存下来rn// 参数:rn// unsigned long devid : 设备IDrn// <em>c</em>har *devname : 设备名称(监控地点名称)rn// <em>c</em>har *svrip : 该设备所在服务器IPrnSMARTV_API long __std<em>c</em>all SLT_ClientGetDevInfo(<em>c</em>har *serverip,<em>c</em>har *user, <em>c</em>har *password,int se<em>c</em>ond,rn void(WINAPI *notify)(unsigned long devid,<em>c</em>har *devname,<em>c</em>har *svrip));rnrnrnrn我在<em>delphi</em> dll 的声明是这样么 ??rnrnunit fun<em>c</em>;rnrninterfa<em>c</em>ernrnimplementationrn fun<em>c</em>tion SLT_ClientStart():integer; std<em>c</em>all; far external 'smartv.dll';rn fun<em>c</em>tion SLT_ClientStop():integer; std<em>c</em>all; far external 'smartv.dll';rn fun<em>c</em>tion SLT_ClientGetDevInfo(serverip:<em>c</em>har;user:<em>c</em>har;password:<em>c</em>har;se<em>c</em>ond:integer):integer; std<em>c</em>all; far external 'smartv.dll';rnend.rnrnrnrn这个SLT_ClientGetDevInfo ,不知道该如何<em>写</em>!!!rn
delphi调用c的dll老是出错
<em>delphi</em>下<em>调用</em><em>c</em><em>写</em>的dll老是出错,我想问一些<em>delphi</em>下怎么和<em>c</em>函数兼容,主要是指他的参数,象这样的函数:rnint method(<em>c</em>onst int nReply, <em>c</em>onst int nLevel,rn <em>c</em>onst <em>c</em>har *sID, rn <em>c</em>har *sID, int *nErrorCode,rn <em>c</em>onst <em>c</em>har <em>c</em>Type,<em>c</em>PTotal=0,<em>c</em>har <em>c</em>Number=0);rn这个函数是<em>c</em>的,<em>delphi</em>里怎么<em>调用</em>的时候怎么掉啊,参数应该怎么对应啊
在DELPHI中如何调用C的动态连接
我有一动态连接<em>库</em>get<em>c</em>ard.dll ,rn他有一个函数extern "C" __std<em>c</em>all int GetCardNo( <em>c</em>har *<em>c</em>pComport, int iTimeOut, <em>c</em>har *<em>c</em>pCardNo );rn我在<em>delphi</em>中该如何<em>调用</em>。rn该如何<em>写</em>?
delphi的dll为什么c无法调用
<em>写</em>的是wso<em>c</em>k32.dllrn我只是记录文本,然后把lisent交给oldwso<em>c</em>k32.dll处理rn用了 std<em>c</em>all可是系统仍然提示出错rn
关于delphi动态c调用的问题
我用<em>delphi</em> <em>写</em>了一个动态<em>库</em>,里面有一个函数rnrnfun<em>c</em>tion rf_anti<em>c</em>oll(Port:integer;var _Data:array of byte):integer;std<em>c</em>all; rnrn就是<em>调用</em>后,要返回一串东西给 _Data 参数rnrnrn别人用 在 C环境中<em>调用</em>说怎么给参数都出错,请教一下,我的动态<em>库</em>函数<em>写</em>的有错误吗;rnrnrn如有,要怎么<em>写</em>呢;rnrnrn熟悉C的朋友看能给出<em>调用</em>要传入的参数吗??rnrn谢谢
delphi调用C语言的Dll
C语言<em>写</em>的Dll是用来访问POS机的。rn我要做<em>delphi</em>的<em>调用</em>,如下Dll接口:rnint AToB(byte far *sr<em>c</em>, byte far *dest, int len)rn在<em>delphi</em>中怎么<em>调用</em>也不成功。请大家帮忙。rn我在Delphi中声明的参数类型是 ^byte
Delphi的OCX调用C的DLL问题
我用Delphi<em>写</em>普通程序<em>调用</em>Dll没有问题,在Delphi<em>写</em>的OCX控件中却调不起来,静态和动态<em>调用</em>都试了,有人知道为什么吗?求指教
delphi里如何调用C的动态
用C<em>写</em>了一个动态<em>库</em>,输出函数声明成__fast<em>c</em>all,用v<em>c</em>的<em>c</em>l.exe编译rn但在<em>delphi</em>里不能<em>调用</em>,提示找不到rn请问<em>delphi</em>里调的动态<em>库</em>,有什么要求么?rn
delphi调用c的dll问题~
<em>c</em>的dll中有一个函数,<em>c</em>har * test(<em>c</em>har * a_str)rn其中参数a_str是返回值的。rnrn请问在<em>delphi</em>中<em>调用</em>用什么参数?p<em>c</em>har 和var p<em>c</em>har都出现问题,rn使用getmem()为p<em>c</em>har参数开辟内存空间还是<em>调用</em>不成功。rn
Delphi调用C语言的Dll
我用C语言<em>写</em>了一个Dll,编译成功。rn是一个非常简单的加密算法,代码如下:rn#in<em>c</em>ludern__de<em>c</em>lspe<em>c</em>(dllexport) void En<em>c</em>ipher(<em>c</em>har a[16]) rnrn int i,len;rn int s=1; rn len=strlen(a);rn for(i=0;i
调用Delphi的动态
有一个Delphi<em>写</em>的动态<em>库</em>,Test.dllrn这是Deliph中的接口函数rnfun<em>c</em>tion MyFun(uDir:string;tDir:string):Boolean;export;rn请问我在VB中应该怎样声明,怎样<em>调用</em>?rn(我不能修改Deliph中的代码)
调用DELPHI的DLL
现在有一个用DELPHI<em>写</em>的DLL其中有一个函数OPENIPrnrnfun<em>c</em>tion pos_openIP(ip_addr:string):boolean;std<em>c</em>all;external 'posdll.dll';rnrn我在VB.NET中是这样<em>调用</em>的rnrn _rn Private Shared Fun<em>c</em>tion DllopenAddr(ByVal ip As string) As Booleanrn End Fun<em>c</em>tionrnrnrn Private Sub Che<em>c</em>kBox1_Che<em>c</em>kedChanged(ByVal sender As System.Obje<em>c</em>t, ByVal e As System.EventArgs) Handles Che<em>c</em>kBox1.Che<em>c</em>kedChangedrn If Che<em>c</em>kBox1.Che<em>c</em>ked Thenrn Dim ret As Booleanrn Tryrn ret = DllopenAddr("192.168.0.90")rn Cat<em>c</em>h ex As Ex<em>c</em>eptionrn labMsg.Text = ex.Message & vbCrLf & ex.ToStringrn End Tryrn If ret Thenrn MessageBox.Show("成功!")rn Elsern MessageBox.Show("失败!")rn End Ifrn Elsern OpenClosed() '关闭连接rn End Ifrn End Subrnrn第一次<em>调用</em>时返回提示"成功",第二次重新选中执行rnret = DllopenAddr("192.168.0.90")rn程序报错内容为: "外部组件异常!..."rnrn1、为什么第一次<em>调用</em>可以成功第二次就不可以了呢,是什么原因呢?rn2、.NET中string类型<em>调用</em>DELPHI中的string类型这样正确吗?rn3、.NET中<em>调用</em>DELPHI中的DLL类型要注意哪些?rnrnrn注:此函数在DELPHI中可以用相同的方法(选中打开,未选中关闭)多次<em>调用</em>都不会报错.rnrnrnrnrn
delphi调用C的dll,无法调用多数组参数的函数
C实现的dll函数rnextern "C" void __de<em>c</em>lspe<em>c</em>(dllexport) Init(int *tx, double *ty)rn rn AFX_MANAGE_STATE(AfxGetStati<em>c</em>ModuleState()); rn for(int i=0;i; rnrn<em>delphi</em><em>调用</em>pro<em>c</em>edure Form1.ButtonCli<em>c</em>k(Sender: TObje<em>c</em>)rnvar rn tx: array [0..4] of integer; rn ty: array [0..4] of double;rnbegin rn Init_1(tx, ty);rnend; rnrn问题:<em>调用</em> Init_1报错。dll的Init函数参数去掉一个,然后<em>delphi</em>相应<em>调用</em>1个参数的Init_1就正确。怎么回事?
delphi调用c的动态,怎么调用这个函数,谢谢
原来的声明是rn__int16 __std<em>c</em>all <em>c</em>ommand(HANDLE idComDev,unsigned <em>c</em>har slen,rn unsigned <em>c</em>har * sendbuffer,unsigned <em>c</em>har *rlen,rn unsigned <em>c</em>har * databuffer,unsigned <em>c</em>har timeout,rn unsigned <em>c</em>har FG);rn我这样用rnFun<em>c</em>tion <em>c</em>ommand(ICDev: longint; slen: smallint; sendbuffer, rlen, databuffer: p<em>c</em>har; timeout,rn FG: smallint): smallint; std<em>c</em>all;rnfar; external 'aaa.dll' name '<em>c</em>ommand';rn程序中应用:rnvarrn StrAPDU:string;rn rlen, rbuff: p<em>c</em>har;rn st: smallint;rn i<em>c</em>dev: longint;rnbeginrn Tryrnrn Getmem(rbuff, 255);rn Getmem(rlen, 255);rn ......rn st := <em>c</em>ommand(i<em>c</em>dev, length(StrAPDU) Div 2, p<em>c</em>har(StrAPDU), rlen, rbuff, 7, 40);rn rn Finallyrnrn freemem(rlen);rn freemem(rbuff);rn End;rn 但是我总是不能在rbuff获得我想要得数据,这是我哪边出错了呢?
C语言调用delphi????
用<em>delphi</em>做了一个画面,如何用C语言去控制这个画面上控件的显示状态,恳请高手赐教!
cdelphi调用问题!
<em>c</em>中的定义:rnextern "C" DllExport int _std<em>c</em>all test(void **p1,long *lp2)rn那在<em>delphi</em>中如何去<em>调用</em>呢?rnrnFUNCTION Test(var COMx:pointer;var xx:longint):integer;std<em>c</em>all;external 'test.DLL';rnrn和 FUNCTION Test(var COMx:byte;var xx:longint):integer;std<em>c</em>all;external 'test.DLL';rn都不能正确使用!. rn不晓得该怎么去声明!请指教!
delphi调用c动态
C语言编<em>写</em>的动态链接<em>库</em>文件DDsfMa<em>c</em>.dllrn其中有一个过程:void GenMa<em>c</em>CEB(<em>c</em>har* bMa<em>c</em>Key, <em>c</em>onst <em>c</em>har* buffers, int iBuffLen, <em>c</em>har* Ma<em>c</em>); rnrn要在<em>delphi</em>中<em>调用</em>这个过程。 rn在implementation上面声明如下:rnpro<em>c</em>edure GenMa<em>c</em>CEB(bMa<em>c</em>Key: PChar; <em>c</em>onst buffers: PChar; iBuffLen: Integer; Ma<em>c</em>: PChar); std<em>c</em>all; external 'DDsfMa<em>c</em>.dll';rn提示:无法定位程序输入点GenMa<em>c</em>CEB于动态链接<em>库</em>DDsfMa<em>c</em>.dll上rn请问如何解决?rnrn谢谢!
delphi调用c dll
函数格式 RET_TYPE WINAPI paralist_getnode(PARALIST_HANDLE list, int <em>c</em>hanNo,PARA_TYPES paraType,rn int *valueLen, <em>c</em>har *value)rn功能 从参数列表获取到一个参数。rn参数rnList:参数列表句柄rn<em>c</em>hanNo:参数对应的通道号,如果跟通道无关,可以填入任何值;rnparaType:参数类型,请参考 PARA_TYPES 的说明;rnvalueLen:参数值长度指针,获取成功后返回参数值的长度;rnvalue:参数值指针,获取成功后返回参数的值。rn返回值 参见 RET_TYPE 说明。rntypedef enum tagErrorCodernrn rnDM_ERR_OK, rnDM_ERR_PARA, rnDM_ERR_NOAUTH, rnDM_ERR_AUTHFAIL, rnDM_ERR_SOCKET, rnDM_ERR_MEM, rnDM_ERR_TIMEOUT, rnDM_ERR_ARG, rnDM_ERR_MATCH, rnDM_ERR_MAXrnRET_TYPE;rn帮忙<em>写</em>一些注释rnrn
C动态delphi调用
我有一動態庫12.dll,其函數說明為如下:rnrn1.HANDLE OpenCfgComm ( short nPort,<em>c</em>har* pSetting )rn 函數說明:打開串口rn nPort:串口號,1表示COM1,2表示COM2...; rn pSetting:串口初始化值,設爲"9600,n,8,1";rn 返回:串口控制碼(長整型);rnrn2.void CloseCfgComm( HANDLE hComm )rn 函數說明:關閉串口;rn hComm: 串口控制碼;rn 返回:無;rn請求怎樣用<em>delphi</em>來實現,最好舉例子
delphi调用C语言!
在C语言环境下,用C语言编<em>写</em>程序实现电动机的正转反转,这一步已经成功实现了。rnrn因要求在必须在<em>delphi</em>下<em>写</em>界面,所以现在不知道如何在Delphi里如何<em>调用</em>C语言。rn哪位兄弟知道教我一下吧,十分火急!rn跪谢!
com内存管理
<em>c</em>om<em>库</em>提供两种内存管理器:一种本进程的作业分配器,另一种跨进程的共享分配器。 利用COM<em>库</em>提供的CoGetMallo<em>c</em>(...)函数获取<em>c</em>om<em>库</em>内存管理器,参数MEMCTX_TASK/MEMCTX_SHARED,对应本进程的作业分配器和跨进程的共享分配器。 提供本进程的三个COM<em>库</em>封装了3个API函数:用于本进程内存管理 CoTaskMemAllo<em>c</em>() CoTaskMemFree()
COM是什么
请教:rnrnCOM<em>库</em>是什么?以什么形式存在?
初始化COM
初始化COM<em>库</em> CoCreateInstan<em>c</em>e //在本机中只创建一个对象 https://baike.baidu.<em>c</em>om/item/CoCreateInstan<em>c</em>e QueryInterfa<em>c</em>e 客户可以通过此函数来查询某个组件是否支持某个特定的接口 https://baike.baidu.<em>c</em>om/item/QueryInterfa<em>c</em>e SetNotifyWindow //注册一个窗口来处...
Python的COM 如何用在c#中!
用Python<em>写</em>的COM<em>库</em> 没有类型<em>库</em>!我用P2exe声称的dll文件 也不是类型<em>库</em>!不知道大家有没有这方面的经验!rn
Delphi调用VB的DLL
请问Delphi能不能<em>调用</em>VB<em>写</em>的DLL,为什么这的会出错,代码如下:rnvarrn Form1: TForm1;rn fun<em>c</em>tion GetRe<em>c</em>ordCount(ComPortNo, ComPortSpeed, Ma<em>c</em>hineNo, Re<em>c</em>ordCount:integer):integer; external 'I<em>c</em><em>c</em>odeA.dll' ;rnrnimplementationrn rnrn$R *.DFMrnrnpro<em>c</em>edure TForm1.Button1Cli<em>c</em>k(Sender: TObje<em>c</em>t);rnvarrn r<em>c</em> : integer;rnbeginrn GetRe<em>c</em>ordCount(1,9600,1,r<em>c</em>);rnend;rn结果一编译就提示:无法定位程序输入点 GetRe<em>c</em>ordCount 于动太链接庫I<em>c</em><em>c</em>odeA.dll上。rnrnDLL说明rn******************rn所有函数返回值:返回短整型rn1 通信口连接超时rn2 操作超时rn8 操作成功rn7 找不到卡钟rn255 传入机号大于255rn所有函数公共传入参数:rnComPortNo 必需的。 短整型值,传入的通讯口号。可为下列之一:1,2,3,4rnComPortSpeed 必需的。 长整型值,传入的通讯口号速率。可为下列之一:9600,19200,38400,57600,115200rnMa<em>c</em>hineNo 必需的。 短整型值,传入的机器号。范围为:0-255rnrnGetRe<em>c</em>ord模块只用于收集卡钟数据,只有两个方法成员:GetRe<em>c</em>ordCount 和 GetRe<em>c</em>ordrnGetRe<em>c</em>ordCount(ComPortNo, ComPortSpeed, Ma<em>c</em>hineNo, Re<em>c</em>ordCount) 返回值:短整型说明:用于取卡钟内刷卡记录总数。rn参数rnRe<em>c</em>ordCount 必需的。长整型,用于返回指定卡钟内存放的记录总数。rnGetRe<em>c</em>ord(ComPortNo, ComPortSpeed, Ma<em>c</em>hineNo, CurrentGetTimes,GotRe<em>c</em>ord() )返回值:短整型说明:用于收集卡钟数据。每<em>调用</em>一次GotRe<em>c</em>ord()数组返回64条记录。一般先<em>调用</em>GetRe<em>c</em>ordCount取卡钟内记录总数,确定<em>调用</em>GetRe<em>c</em>ord次数,再循环<em>调用</em>GetRe<em>c</em>ord函数取记录。在取完记录后<em>调用</em>SetMa<em>c</em>hine.DeleteAllData函数将所有刷卡记录删除。rn参数rnCurrentGetTimes 必需的。长整型值。只<em>调用</em>一次本函数时,CurrentGetTimes设为1。当卡钟内记录数超过64条,需要循环<em>调用</em>时,第一次<em>调用</em>时CurrentGetTimes必须为1,第二次到最后一次不能为1,否则只取总记录的前64条。一般CurrentGetTimes设为每<em>调用</em>一次加1。GetRe<em>c</em>ord<em>调用</em>间隔不能少于150毫秒,否则卡钟会因等不到命令而不发送数据,GetRe<em>c</em>ord返回2取记录超时。一般把64条记录<em>写</em>入硬盘后应马上进行下一次<em>调用</em>。rnGotRe<em>c</em>ord() 必需的。 一维字符串数组,用于返回刷卡记录,每次<em>调用</em>返回64条记录。最后一次<em>调用</em>若不足64条则按实际条数返回。rn********************rn
C#调用delphi的DLL
我用C#<em>调用</em><em>delphi</em><em>写</em>的DLL,但是一个方法不知道怎么定义,求大家帮帮忙。rnrn一. <em>delphi</em>中的函数名称rnfun<em>c</em>tion GetData( pt: Data): LongInt;//读取数据rnrn<em>delphi</em>数据结构如下:rnData = re<em>c</em>ordrn id: LongInt; //编码rn Type: LongInt; //类型rn Time: LongInt; //时间rn Value: LongInt; //值rn end;rnrnrn请问大家,在C#总怎么定义,我是这样定义的,但是好像有问题:rn [DllImport("DELPHI.dll")]rn publi<em>c</em> stati<em>c</em> extern void GetData(int[] Datas);rn
delphi 调用C#的ActiveX
要求:<em>delphi</em> <em>调用</em>C#<em>写</em>的A<em>c</em>tiveX,不是<em>c</em>om,任何功能都可以,急需一简单例子。(A<em>c</em>tiveX控件是COM技术的一个具体实现)rn
调用delphi的dll的问题
我<em>写</em>了DLL,就一个函数,用来向SOCKET发送数据,不知道这样是否可以实现那,无论SOCKET是否链接,测试都报错,是不是so<em>c</em>ket不能在本程序以外进行<em>调用</em>发送数据的函数,如果我想实现,那应该怎么<em>写</em>。我的DLL代码如下rnlibrary intf;rnrn Important note about DLL memory management: ShareMem must be thern first unit in your library's USES <em>c</em>lause AND your proje<em>c</em>t's (sele<em>c</em>trn Proje<em>c</em>t-View Sour<em>c</em>e) USES <em>c</em>lause if your DLL exports any pro<em>c</em>edures orrn fun<em>c</em>tions that pass strings as parameters or fun<em>c</em>tion results. Thisrn applies to all strings passed to and from your DLL--even those thatrn are nested in re<em>c</em>ords and <em>c</em>lasses. ShareMem is the interfa<em>c</em>e unit torn the BORLNDMM.DLL shared memory manager, whi<em>c</em>h must be deployed alongrn with your DLL. To avoid using BORLNDMM.DLL, pass string informationrn using PChar or ShortString parameters. rnrnusesrn SysUtils,rn Classes,Client;//我自己的主程序的so<em>c</em>ket单元rnrnvarrnForm:TForm1;rn$R *.resrnpro<em>c</em>edure interSend(nub:String);std<em>c</em>all;rnbeginrntryrnForm.sendTe(nub); //主程序的方法 用于发送数据rnfinallyrnend;rnend;rnrnexports interSend;rnbeginrnrnend.rnrnrn<em>调用</em>错误信息 A<em>c</em><em>c</em>ess violation at address 004D1F40 in module intf.dllrnrn
C++DLL,delphi调用
VS2008中创建DLL工程 文件-&gt;新建-&gt;项目-&gt;visual <em>c</em>++-&gt;win32-&gt;win32控制台应用程序(win32项目也可以) 填<em>写</em>项目名称MyDLL-&gt;确定-&gt;下一步-&gt;DLL(附加选项 对空项目打钩)-&gt;完成。 到这里DLL工程就创建完毕了,下面新建两个文件testDLL.<em>c</em>pp和testDLL.h。 C++ ....
Delphi 调用C#的动态
C#<em>写</em>的动态<em>库</em>接口如下rnpubli<em>c</em> stati<em>c</em> int LoadSystem(string strCount, string strUser, string strPin)rn动态<em>库</em>名为:aaa.dllrn rnrn请问应该如何<em>调用</em>呀
Delphi调用C#的Interface
[img=https://img-bbs.<em>c</em>sdn.net/upload/201710/04/1507081331_684520.png][/img]rnDelphi<em>调用</em>C#代码<em>写</em>的接口IListItem,如上图一直报错,哪位大神指导下
dotnet调用delphicgi
最近<em>写</em>了一个关于dotnet<em>调用</em><em>delphi</em><em>写</em>的<em>c</em>gi的程序,参考了网上很多网友发的帖子,这里我将大家的内容加上我自己的心得<em>写</em>一篇,让后来像我这样的小虾少走点弯路。rnrn一、用Delphi开发Web Servi<em>c</em>e程序rn打开Delphi7.0的开发环境,依次选择New | Other | WebServi<em>c</em>es | SOAP Server Appli<em>c</em>ation,然后选择CGI Stand-alone exe<em>c</em>utable,系统将自动包含进开发Web Servi<em>c</em>e所需要的类。在弹出的<em>c</em>onfirm窗口中点击确定,并在Add new servi<em>c</em>es窗口中输入servi<em>c</em>es name:test,系统自动生成工程,将新建工程保存为testservi<em>c</em>es。rn编辑文件testImpl、testIntf生成<em>调用</em>接口,编辑后的文件如下,其中红色字体为自己添加的代码,蓝色字体是申明的接口。rntestIntf:rn Invokable interfa<em>c</em>e Itest rnrnunit testIntf;rnrninterfa<em>c</em>ernrnuses InvokeRegistry, Types, XSBuiltIns;rnrntypernrn Invokable interfa<em>c</em>es must derive from IInvokable rn Itest = interfa<em>c</em>e(IInvokable)rn ['FE47D43F-59DF-4AF9-ACD4-BA3882C01B31']rnrn Methods of Invokable interfa<em>c</em>e must not use the default rn <em>c</em>alling <em>c</em>onvention; std<em>c</em>all is re<em>c</em>ommended rn fun<em>c</em>tion gettext():widestring;std<em>c</em>all;//申明在自定义接口中所定义的方法rn end;rnrnimplementationrnrnrninitializationrn Invokable interfa<em>c</em>es must be registered rn InvRegistry.RegisterInterfa<em>c</em>e(TypeInfo(Itest));rnrnend.rnrntestImpl:rn Invokable implementation File for Ttest whi<em>c</em>h implements Itest rnrnunit testImpl;rnrninterfa<em>c</em>ernrnuses InvokeRegistry, Types, XSBuiltIns, testIntf;rnrntypernrn Ttest rn Ttest = <em>c</em>lass(TInvokableClass, Itest)rn publi<em>c</em>rn fun<em>c</em>tion gettext():widestring;std<em>c</em>all;//申明在自定义接口中所定义的方法rn end;rnrnimplementationrnfun<em>c</em>tion Ttest.gettext: widestring; std<em>c</em>all;//实现自定义方法rnbeginrn Result:='Su<em>c</em><em>c</em>ess';rnend;rnrninitializationrn Invokable <em>c</em>lasses must be registered rn InvRegistry.RegisterInvokableClass(Ttest);rnrnend.rnrn这样就生成一个返回字符串类型的接口方法。rn二、把服务程序放在IIS Web服务器上提供给各种客户程序<em>调用</em>。rn在IIS的默认站点里面新建一个虚拟目录<em>delphi</em>-<em>c</em>gi,并将该虚拟目录的执行权限设置为“脚本和可执行文件”以使该目录具有执行ISAPI扩展的权限,将虚拟目录指向该工程的文件夹。rn三、在dotnet中<em>调用</em>该webservies。rn在dotnet中添加web引用,在添加web引用窗口的URL栏中填入<em>delphi</em>的webservies的URL地址:http://lo<em>c</em>alhost/<em>delphi</em>-<em>c</em>gi/testservi<em>c</em>es.exe/wsdl/Itest(如图1),点击转到,系统会自动发现接口(如图2),在web引用名栏中输入testservi<em>c</em>es,点击添加引用,系统将添加该引用(如图3)。rn在WebForm1.aspx上添加button、textbox,在WebForm1.aspx.<em>c</em>s中添加代码:rnusing WebServi<em>c</em>e1. testservi<em>c</em>es;rn在事件Button1_Cli<em>c</em>k中添加代码:rnWebServi<em>c</em>e1.testservi<em>c</em>es.Itestservi<em>c</em>e tt=new WebServi<em>c</em>e1.testservi<em>c</em>es.Itestservi<em>c</em>e();rnTextBox1.Text=tt.gettext();rn运行程序在文本框中会显示字符“su<em>c</em><em>c</em>ess”。rn 图1rn rn图2rn rn图3rnrn
PB9.0调用DELPHI的动态
举个例子,有<em>delphi</em><em>写</em>的DLL中有个函数是这样声明的:rnfun<em>c</em>tion setConne<em>c</em>t(<em>c</em>onst dbName, dbUser, dbPwd :p<em>c</em>har):boolean;std<em>c</em>all;rn那我在PB中应该如何声明??rnrn
winfrom调用delphi的dll
有<em>delphi</em><em>写</em>的一个dll,dll中有个<em>c</em>om控件。rn问题是我现在引用了在winfrom中报错,错误信息:无法在dll中找到"Conne<em>c</em>tReq"入口点rnrn[<em>c</em>ode=C#] [DllImport("SPCUserInterfa<em>c</em>e.dll", EntryPoint = "Conne<em>c</em>tReq", SetLastError = true, CharSet = CharSet.Ansi,rn CallingConvention = CallingConvention.StdCall, Exa<em>c</em>tSpelling = true)]rn publi<em>c</em> stati<em>c</em> extern bool <em>c</em>onne<em>c</em>tReq();rnrnrnrn[/<em>c</em>ode]rnrn文档中有方法:rnrn方法名: Conne<em>c</em>tReqrn参数: 无rn返回值: VARIANT_BOOLrn True:成功rn False:失败
DELPHI调用VC的DLL
[url=http://www.ggniu.<em>c</em>n/arti<em>c</em>les/niuniuimageole.html][/url][img=https://img-bbs.<em>c</em>sdn.net/upload/201611/04/1478227413_215555.png][/img]rn为什么我用DELPHI<em>调用</em>这个示例无效果呢?rn这个是文档地址:rn[url=http://www.ggniu.<em>c</em>n/download/Des<em>c</em>ription_of_NiuniuImageOle.do<em>c</em>][/url]rnrn这个是DLL地址:rn[url=http://www.ggniu.<em>c</em>n/download/NiuniuImageOle.zip][/url]rnrn难不成DELPHI的RICHEDIT不一样?rn[<em>c</em>ode=<em>delphi</em>]unit Unit1;rnrninterfa<em>c</em>ernrnusesrn Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, V<em>c</em>l.Graphi<em>c</em>s,rn V<em>c</em>l.Controls, V<em>c</em>l.Forms, V<em>c</em>l.Dialogs, V<em>c</em>l.StdCtrls, V<em>c</em>l.ComCtrls;rnrntypern TForm1 = <em>c</em>lass(TForm)rn Ri<em>c</em>hEdit1: TRi<em>c</em>hEdit;rn Button1: TButton;rn Button2: TButton;rn Button3: TButton;rn Button4: TButton;rn pro<em>c</em>edure Button2Cli<em>c</em>k(Sender: TObje<em>c</em>t);rn pro<em>c</em>edure Button1Cli<em>c</em>k(Sender: TObje<em>c</em>t);rn pro<em>c</em>edure Button3Cli<em>c</em>k(Sender: TObje<em>c</em>t);rn pro<em>c</em>edure Button4Cli<em>c</em>k(Sender: TObje<em>c</em>t);rn privatern Dll: THandle;rn publi<em>c</em>rn Publi<em>c</em> de<em>c</em>larations rn end;rnrnrnvarrn Form1: TForm1;rnrnimplementationrnrn$R *.dfmrnrnpro<em>c</em>edure TForm1.Button1Cli<em>c</em>k(Sender: TObje<em>c</em>t);rnvarrnrn Niuniu_GetRi<em>c</em>hTextContent:fun<em>c</em>tion (hs:THandle):AnsiChar;std<em>c</em>all;rnbeginrn tryrnrn if Dll = 0 thenrn beginrn showmessage('Ri<em>c</em>hEditWrapper.dll未加载!');rn Exit;rn end;rn @Niuniu_GetRi<em>c</em>hTextContent := GetPro<em>c</em>Address(Dll, 'Niuniu_InitRi<em>c</em>hEditWnd'); //取得函数的入口地址rn if @Niuniu_GetRi<em>c</em>hTextContent = nil thenrn beginrn showmessage('获取Dll函数失败!');rn Exit;rn end;rn ShowMessage(Niuniu_GetRi<em>c</em>hTextContent(Self.Ri<em>c</em>hEdit1.Handle)) ;rn ex<em>c</em>eptrn on E:Ex<em>c</em>eption dorn beginrn showmessage('获取Dll函数失败!'+E.Message);rn end;rn end;rnend;rnrnpro<em>c</em>edure TForm1.Button2Cli<em>c</em>k(Sender: TObje<em>c</em>t);rnrnvarrnrn Niuniu_InitRi<em>c</em>hEditWnd:fun<em>c</em>tion (hp,hs:THandle):integer;std<em>c</em>all;rnbeginrn tryrn Dll := LoadLibrary('Ri<em>c</em>hEditWrapper.dll');rn if Dll = 0 thenrn beginrn showmessage('Ri<em>c</em>hEditWrapper.dll未加载!');rn Exit;rn end;rn @Niuniu_InitRi<em>c</em>hEditWnd := GetPro<em>c</em>Address(Dll, 'Niuniu_InitRi<em>c</em>hEditWnd'); //取得函数的入口地址rn if @Niuniu_InitRi<em>c</em>hEditWnd = nil thenrn beginrn showmessage('获取Dll函数失败!');rn Exit;rn end;rn Niuniu_InitRi<em>c</em>hEditWnd(self.Handle,Self.Ri<em>c</em>hEdit1.Handle) ;rn Niuniu_InitRi<em>c</em>hEditWnd(self.Handle,Self.Ri<em>c</em>hEdit1.Handle) ;rn ex<em>c</em>eptrn on E:Ex<em>c</em>eption dorn beginrn showmessage('获取Dll函数失败!'+E.Message);rn end;rn end;rnend;rnrnpro<em>c</em>edure TForm1.Button3Cli<em>c</em>k(Sender: TObje<em>c</em>t);rnvarrnrn Niuniu_InsertImage:fun<em>c</em>tion (hs:THandle;fffa:LPCTSTR):AnsiChar;std<em>c</em>all;rnbeginrn tryrnrn if Dll = 0 thenrn beginrn showmessage('Ri<em>c</em>hEditWrapper.dll未加载!');rn Exit;rn end;rn @Niuniu_InsertImage := GetPro<em>c</em>Address(Dll, 'Niuniu_InitRi<em>c</em>hEditWnd'); //取得函数的入口地址rn if @Niuniu_InsertImage = nil thenrn beginrn showmessage('获取Dll函数失败!');rn Exit;rn end;rn ShowMessage(Niuniu_InsertImage(Self.Ri<em>c</em>hEdit1.Handle,'D:\161013154141.jpg')) ;rn ex<em>c</em>eptrn on E:Ex<em>c</em>eption dorn beginrn showmessage('获取Dll函数失败!'+E.Message);rn end;rn end;rnend;rnrnpro<em>c</em>edure TForm1.Button4Cli<em>c</em>k(Sender: TObje<em>c</em>t);rnvarrnrn Niuniu_AppendMsg:pro<em>c</em>edure (hs:THandle;fffa:LPCTSTR);std<em>c</em>all;rnbeginrn tryrnrn if Dll = 0 thenrn beginrn showmessage('Ri<em>c</em>hEditWrapper.dll未加载!');rn Exit;rn end;rn @Niuniu_AppendMsg := GetPro<em>c</em>Address(Dll, 'Niuniu_InitRi<em>c</em>hEditWnd'); //取得函数的入口地址rn if @Niuniu_AppendMsg = nil thenrn beginrn showmessage('获取Dll函数失败!');rn Exit;rn end;rn Niuniu_AppendMsg(Self.Ri<em>c</em>hEdit1.Handle,'D:\161013154141.jpg');rn ex<em>c</em>eptrn on E:Ex<em>c</em>eption dorn beginrn showmessage('获取Dll函数失败!'+E.Message);rn end;rn end;rnend;rnrnend.[/<em>c</em>ode]rn[<em>c</em>ode=<em>delphi</em>]obje<em>c</em>t Form1: TForm1rn Left = 0rn Top = 0rn Caption = 'Form1'rn ClientHeight = 387rn ClientWidth = 671rn Color = <em>c</em>lBtnFa<em>c</em>ern Font.Charset = DEFAULT_CHARSETrn Font.Color = <em>c</em>lWindowTextrn Font.Height = -11rn Font.Name = 'Tahoma'rn Font.Style = []rn OldCreateOrder = Falsern PixelsPerIn<em>c</em>h = 96rn TextHeight = 13rn obje<em>c</em>t Ri<em>c</em>hEdit1: TRi<em>c</em>hEditrn Left = 96rn Top = 160rn Width = 481rn Height = 113rn Font.Charset = GB2312_CHARSETrn Font.Color = <em>c</em>lWindowTextrn Font.Height = -11rn Font.Name = 'Tahoma'rn Font.Style = []rn ParentFont = Falsern TabOrder = 0rn endrn obje<em>c</em>t Button1: TButtonrn Left = 328rn Top = 104rn Width = 75rn Height = 25rn Caption = 'Button1'rn TabOrder = 1rn OnCli<em>c</em>k = Button1Cli<em>c</em>krn endrn obje<em>c</em>t Button2: TButtonrn Left = 64rn Top = 32rn Width = 75rn Height = 25rn Caption = 'Button2'rn TabOrder = 2rn OnCli<em>c</em>k = Button2Cli<em>c</em>krn endrn obje<em>c</em>t Button3: TButtonrn Left = 472rn Top = 96rn Width = 75rn Height = 25rn Caption = 'Button3'rn TabOrder = 3rn OnCli<em>c</em>k = Button3Cli<em>c</em>krn endrn obje<em>c</em>t Button4: TButtonrn Left = 200rn Top = 312rn Width = 75rn Height = 25rn Caption = 'Button4'rn TabOrder = 4rn OnCli<em>c</em>k = Button4Cli<em>c</em>krn endrnend[/<em>c</em>ode]rn
delphi调用存储过程的语句
在sql下的rnde<em>c</em>lare @sumd float(4)rnde<em>c</em>lare @sumt intrnde<em>c</em>lare @sumdt float(4)rnexe<em>c</em> fore<em>c</em>ast '2005-1-1','2005-12-31',@sumd output,@sumt output,@sumdt output rn到delpih下如何<em>写</em>?rn用adostoredpro<em>c</em><em>写</em>。
Delphi 调用C#的Dll
我用C#<em>写</em>了一个“wudong.dll”文件,里面有一个方法: rn“publi<em>c</em> void InsertBom(string orderno,string orderitem)” rn方法的目的是从SAP取出一些记录(可能有2000条),然后再插入本地数据<em>库</em>。 rn------------------------ rn请问各位大侠:使用Delphi6怎样<em>调用</em>这个wudong.dll文件的方法?? rn答案详细点,谢谢。。。
如何调用Delphi的DLL
1. 参数PChar 在 C#对应的是什么类型?rn2. Delphi函数指针以及函数指针里的 PChar 怎么对应?
java调用delphi的webservice
wsdl:rnhttp://61.154.14.22:8765/ws12580Appoint.dll/wsdl/Iws12580Appointrnrn用php和<em>delphi</em>本身可以。java<em>调用</em>就会出错:rn生成客户端时报错:rn[<em>c</em>ode=Java]rnaddress:http://61.154.14.22:8765/ws12580Appoint.dll/wsdl/Iws12580Appoint -- <em>c</em>om.funo.w<em>c</em>ity.app.appoint.servi<em>c</em>e.CityServi<em>c</em>e.findCityToBean1258(CityServi<em>c</em>e.java:84)rnEx<em>c</em>eption in thread "main" AxisFaultrn faultCode: http://s<em>c</em>hemas.xmlsoap.org/soap/envelope/Server.userEx<em>c</em>eptionrn faultSub<em>c</em>ode: rn faultString: org.xml.sax.SAXEx<em>c</em>eption: Bad envelope tag: definitionsrn faultA<em>c</em>tor: rn faultNode: rn faultDetail: rnhttp://xml.apa<em>c</em>he.org/axis/sta<em>c</em>kTra<em>c</em>e:org.xml.sax.SAXEx<em>c</em>eption: Bad envelope tag: definitionsrn[/<em>c</em>ode]
delphi调用vc的dll
一个v<em>c</em><em>写</em>的dll 实现3des功能,调三个函数,头文件如下rnDECL des_3EEEinit(UCHAR *key, int len, DES_KS ks1, DES_KS ks2, DES_KS ks3);rnDECL des_e<em>c</em>b3EEEen<em>c</em>ode(UCHAR *in64, UCHAR *out64, DES_KS ks1, DES_KS ks2, DES_KS ks3);rnDECL des_e<em>c</em>b3EEEde<em>c</em>ode(UCHAR *in64, UCHAR *out64, DES_KS ks1, DES_KS ks2, DES_KS ks3);rn其中rntypedef unsigned long DES_KS[16][2];rnrn在<em>delphi</em>中<em>调用</em>此dllrnrntypern kstype=array[1..16,1..2] of dword; //对应unsigned long DES_KS[16][2];rnFun<em>c</em>tion des_3EEEinit (key:p<em>c</em>har;len : integer;var ks1,ks2,ks3:kstype) : Longword ; <em>c</em>de<em>c</em>l ; external 'des3.dll' ;rnrnpro<em>c</em>edure TForm1.Button1Cli<em>c</em>k(Sender: TObje<em>c</em>t);rnvar ks1,ks2,ks3:kstype;rn key:p<em>c</em>har;rnbeginrn key:= '123456789012345678901234';rn des_3EEEinit(key,224,ks1,ks2,ks3);rnend;rnrn出内存错误 不知道是因为p<em>c</em>har对应UCHAR *key的问题,还是那个二维数组的问题,请高手指教rndll,头文件,demo在此下载http://euploading.<em>c</em>n/file/23057/des3-win32-zip.htmlrnrn如能提供<em>delphi</em>版的3des算法,能够解密该dll加密的文件也可
如何调用Delphi的dll
我用Delphi<em>写</em>了一个dll,想在BCB中<em>调用</em>,可是在<em>调用</em>是根本没有结果,不起作用.rnrnvarrn SaveName: PAnsiChar;rnfun<em>c</em>tion GetFileName(filename: PAnsiChar): String; std<em>c</em>all;rnrnfun<em>c</em>tion GetFileName(filename: PAnsiChar): String; std<em>c</em>all;rnbeginrn filename := SaveName;rn Result := Extra<em>c</em>tFileName(filename);rnend;rnrnpro<em>c</em>edure TForm1.Button3Cli<em>c</em>k(Sender: TObje<em>c</em>t);rnbeginrn if SaveImageEnDialog1.Exe<em>c</em>ute then beginrn SaveName := PAnsiChar(SaveImageEnDialog1.FileName);rn ImageEnIO1.SaveToFile(SaveImageEnDialog1.FileName);rn end;rnend;rnrn//<em>调用</em>程序为rnHINSTANCE Dll = LoadLibrary("S<em>c</em>an.dll");rn String filename;rn if (Dll)rn rn //LoadFun<em>c</em>tion = (String(__std<em>c</em>all*)())GetPro<em>c</em>Address(Dll, "GetFileName");rn GetFileName = (String(__std<em>c</em>all*)(String))GetPro<em>c</em>Address(Dll, "GetFileName");rn if (GetFileName) rn DBEdit3->Text = GetFileName(filename);rn ShowMessage(GetFileName(filename));rn rn elsern ShowMessage(SysErrorMessage(GetLastError()));rn FreeLibrary(Dll);rn rnrn elsern rn ShowMessage(SysErrorMessage(GetLastError()));rn ShowMessage("Unable to load the Dll");rn rnrn我在rnDelphi7入门与精通一书中看到,有的dll只能在<em>delphi</em>中<em>调用</em>,这是什么意思呢?rn请大家帮助看一看,为什么<em>调用</em>的时候在Delphi中有结果,而在BCB中<em>调用</em>却没有结果呢?
BCB调用DELPHI 的DLL的
这是DELPHI dll里面的函数定义rnpro<em>c</em>edure DLLFM_HRADMIN_CREATE_EMMAINFORM(ParentAppli<em>c</em>ation: TAppli<em>c</em>ation; ParentForm: TForm;ado<em>c</em>onn:TADOConne<em>c</em>tion;<em>c</em>hr_<em>c</em>aption:AnsiString); export; std<em>c</em>all;rn内容是:rnvarrn Form1: TfrmStainfo;rn su: TCHILDFORMINFO;rnbeginrn appli<em>c</em>ation:=Parentappli<em>c</em>ation;rn Form1:=TfrmStainfo.Create(Parentform );rn form1.aqStaDetail.Conne<em>c</em>tion :=ado<em>c</em>onn ;rn form1.aqStaInfo.Conne<em>c</em>tion :=ado<em>c</em>onn;rn form1.FormStyle:=fsMDIChild;rn form1.fm_pfm :=Parentform ;rn su.str_<em>c</em>aption :=form1.Caption;rn su.h_handle :=form1.Handle;rn SendMessage(Parentform.Handle ,WM_MYMESSAGE,HWND_ADDCHILDFORM, longint(@su) );rn Form1.Show ;rn下面是BCB里面函数定义rnvoid (*ProvaChild1)(TAppli<em>c</em>ation *ParentAppli<em>c</em>ation,TForm *ParentForm,TADOConne<em>c</em>tion *ado<em>c</em>onn,AnsiString <em>c</em>hr_<em>c</em>aption);rn<em>调用</em>代码:rnProvaChild1(Appli<em>c</em>ation,this,dm->ado<em>c</em>onn1,str_<em>c</em>aption);rnrn以上没有错误,但是,换成以下的东西就 不对了rnrnDELPHI dll里面的函数定义rnrnpro<em>c</em>edure DLLFM_HRADMIN_CREATE_EMMAINFORM(parentapp:TAppli<em>c</em>ation;parentfm:TForm;ado<em>c</em>onn:TADOConne<em>c</em>tion;<em>c</em>aption:AnsiString); export; std<em>c</em>all;rnvarrn Form1: TfrmStainfo;rn su: TCHILDFORMINFO;rnbeginrn Appli<em>c</em>ation:=parentapp ;rn Form1:=TfrmStainfo.Create(parentfm );rn form1.aqStaDetail.Conne<em>c</em>tion :=ado<em>c</em>onn ;rn form1.aqStaInfo.Conne<em>c</em>tion :=ado<em>c</em>onn ;rn //form1.Caption:=<em>c</em>aption ;rn form1.FormStyle:=fsMDIChild;rn form1.fm_pfm :=parentfm ;rn form1.WindowState :=wsMaximized;rn su.str_<em>c</em>aption :=form1.Caption;rn su.h_handle :=form1.Handle;rn SendMessage(parentfm.Handle ,WM_MYMESSAGE,HWND_ADDCHILDFORM, longint(@su) );rn SendMessage(Parentform.Handle ,WM_MYMESSAGE,HWND_ADDCHILDFORM, longint(@su) );rn Form1.Show ;rnrn下面是BCB里面函数定义rnvoid (*CrateDllFormHR)(TAppli<em>c</em>ation *parentapp,TForm *parentfm,TADOConne<em>c</em>tion *ado<em>c</em>onn,AnsiString <em>c</em>aption);rn<em>调用</em>代码:rnCrateDllFormHR(Appli<em>c</em>ation,this,dm->ado<em>c</em>onn1,str_<em>c</em>aption);rnrnDLL里面有多个导出函数rnrn为了这个弄了很久啊.我就不明白,为什么参数名字换了,就不行了(当然,我BCB里面<em>调用</em>的参数名字也和DELPHI里面一样换了)
VB调用DELPHI的DLL
'fun<em>c</em>tion ReadI<em>c</em>Card(ComName:P<em>c</em>har;out sI<em>c</em>No, sEmpNo, sEmpName, sEmpSex, sPassword,rn' sEmpUnitName, sEmpRylb, sEmpQxh, InHosp, HospCode: shortstring;rn' var intHospNum, intOldYear: integer;rn' var <em>c</em>urNNT<em>c</em>yz, <em>c</em>urNNDEYZ, <em>c</em>urMTYZ, GZYE, MZQFLJ: Double): integer; export;rn'上面是<em>delphi</em><em>写</em>的DLL函数定义原形,在VB里面怎么定义啊?? rn'注意:不要说DLL有问题,因为已经有人使用了.哈哈rn'下面是我<em>写</em>的没有成功rnrnPrivate De<em>c</em>lare Fun<em>c</em>tion ReadI<em>c</em>Card Lib "HospPoli<em>c</em>y.dll" (ByVal ComName As String, ByRef sI<em>c</em>No As String, _rn ByRef sEmpNo As String, ByRef sEmpName As String, ByRef sEmpSex As String, ByRef sPassWord As String, _rn ByRef sEmpUnitName As String, ByRef sEmpRylb As String, ByRef sEmpQxh As String, ByRef InHosp As String, _rn ByRef HospCode As String, ByRef intHospNum As Integer, ByRef intOldYear As Integer, ByRef <em>c</em>urNNT<em>c</em>yz As Double, _rn ByRef <em>c</em>urNNDEYZ As Double, ByRef <em>c</em>urMTYZ As Double, ByRef GZYE As Double, ByRef MZQFLJ As Double) As LongrnrnPrivate Sub Command1_Cli<em>c</em>k()rn Dim i<em>c</em>handle As Longrn Dim ComName As Stringrn Dim sI<em>c</em>No As Stringrn Dim sEmpNo As Stringrn Dim sEmpName As Stringrn Dim sEmpSex As Stringrn Dim sPassWord As Stringrn Dim sEmpUnitName As Stringrn Dim sEmpRylb As Stringrn Dim sEmpQxh As Stringrn Dim InHosp As Stringrn Dim HospCode As Stringrnrn Dim intHospNum, intOldYear As Integerrn Dim <em>c</em>urNNT<em>c</em>yz, <em>c</em>urNNDEYZ, <em>c</em>urMTYZ, GZYE, MZQFLJ As Doublern rn ComName = "COM1"rn i<em>c</em>handle = ReadI<em>c</em>Card(ComName, sI<em>c</em>No, sEmpNo, sEmpName, sEmpSex, _rn sPassWord, sEmpUnitName, sEmpRylb, sEmpQxh, InHosp, HospCode, _rn intHospNum, intOldYear, <em>c</em>urNNT<em>c</em>yz, <em>c</em>urNNDEYZ, <em>c</em>urMTYZ, GZYE, MZQFLJ)rn If i<em>c</em>handle = 0 Thenrn MsgBox ("NOT")rn End Ifrn rnrnEnd Subrn
怎样用CDelphi控件?
我想用C<em>写</em>一个Delphi控件,应该怎样做啊,都说说,都有分的,给点思路或建议就行,或者告诉我哪里有这方面的资料,谢谢!
delphi的DLL,用VB调用正常,delphi调用失败?!
DLL内的函数类似:rnfun<em>c</em>tion tmp(a:string):integerrn函数内用了tadoquery对数据<em>库</em>操作。把的tadoquery语句去掉就OK!rn为什么??!!rnrn
Delphi调用C的动态问题
我有一个C的动态<em>库</em>i<em>c</em>_dll.dll,rn里面有一个函数bool GetNextK(int Ma<em>c</em>hNo,<em>c</em>har *Result);rnResult:一个长度为22的字符数据组,返回结果存在此数据组中rnrn请问我在<em>delphi</em>里怎样静态声明和<em>调用</em>这个函数,谢谢,在线等。
delphi如何调用c语言程序???
已经编译好的<em>c</em>程序能不能被<em>delphi</em> <em>调用</em>?rn如何<em>调用</em>?rn解决给分
delphi调用C动态问题
C动态<em>库</em>中定义了一个结构体如下:rn结构体rntypedef stru<em>c</em>t st_itemsele<em>c</em>t_rnrn WORD wID; //编号rn VOID *pValue; //编号所对应的数据缓冲区rn WORD wValueLen; //数据缓冲区大小rnITEMSELECT,*P_ITEMSELECT;rnrn<em>调用</em>的函数声明如下:rnDWORD GetItem(void *pvSele<em>c</em>t,int nItem);rn/*rn pvSele<em>c</em>t: ST_ITEMSELECT * 数组模板rn nItem : 需要读取的ST_ITEMSELECT个数。rn*/rn此函数的功能是通过结构体中传入的编号参数,获取到对应的数据缓冲区值。rnrnrn我现在用DELPHI去<em>调用</em>执行,先定义对应的结构体如下:rntypern PItemSele<em>c</em>t = ^TItemSele<em>c</em>t;rn TItemSele<em>c</em>t = pa<em>c</em>ked re<em>c</em>ordrn wID: WORD;rn pValue: pointer;rn wValueLen: WORD;rn end;rn定义的<em>调用</em>函数如下:rnfun<em>c</em>tion GetItem(pvSele<em>c</em>t:pointer;nItem:integer):DWORD;std<em>c</em>all;rn程序实现如下:rnvarrn st_itemsele<em>c</em>t:array of PItemSele<em>c</em>t; //定义结构体对象数组rnbeginrn SetLength(st_itemsele<em>c</em>t,1); //设定数组上限为1rn GetMem(st_itemsele<em>c</em>t[0],Sizeof(TItemSele<em>c</em>t)); //分配数组内存rnrn st_itemsele<em>c</em>t[0].wID:=1; //设置传入参数rn t_itemsele<em>c</em>t[0].pValue:=GetMemory(18); //分配返回缓冲区rn st_itemsele<em>c</em>t[0].wValueLen:=18;rnrn GetItem(st_itemsele<em>c</em>t,1); //<em>调用</em>DLL函数rnrn showmessage(pChar(st_itemsele<em>c</em>t[0].pValue)); //显示返回缓冲区结果rnrn FreeMemory(st_itemsele<em>c</em>t[0].pValue); //释放缓冲区内存rn FreeMem(st_itemsele<em>c</em>t[0]); //释放数组内存rn st_itemsele<em>c</em>t:=nil;rnend;rnrn然而程序运行后获取的结果是乱码,并不是正确的数据,请问是上述过程中那个环节我弄错了,谢谢。
delphi调用c动态出问题
C++中定义的动态<em>库</em>函数,并在<em>delphi</em>中已正常<em>调用</em>。rnint GenMa<em>c</em>(unsigned <em>c</em>har* bMa<em>c</em>Key, <em>c</em>onst <em>c</em>har* buffers, int iBuffLen, <em>c</em>har* Ma<em>c</em>) rn rn ......rn mem<em>c</em>py(Ma<em>c</em>, blo<em>c</em>k, 8) ;rn sprintf(Ma<em>c</em>,"%8x",Ma<em>c</em>); //// 加上此句命令出问题rn return 0;rnrn不加 sprintf(Ma<em>c</em>,"%8x",Ma<em>c</em>) 时,在Delphi中<em>调用</em>此函数,返回的Ma<em>c</em>值正常,加上 sprintf(Ma<em>c</em>,"%8x",Ma<em>c</em>) 后,返回的Ma<em>c</em>为什么总变化。我还发现,加上sprintf(Ma<em>c</em>,"%8x",Ma<em>c</em>)后,不同的<em>c</em>onst <em>c</em>har* buffers生成的ma<em>c</em> 竟然相同。rn请高手指点,谢谢!
delphi 如何调用c程序???
-
客户程序,COM,组件程序
客户程序,COM<em>库</em>,组件程序rn分别是什么意思?
C调用delphi的dll,FreeLibrary时出错
用<em>c</em>、<em>delphi</em>分别<em>写</em>了个dll,然后用<em>c</em>来<em>调用</em>,<em>c</em>+<em>delphi</em>时,执行到FreeLibrary出错rn注:<em>c</em>使用wxDev-C ++ 7.3.1开发,GC<em>c</em>编译。<em>delphi</em>使用<em>delphi</em>2007.操作系统为windows7。rnrn1、<em>调用</em>程序rn[<em>c</em>ode=C/C++]rn#in<em>c</em>lude rn#in<em>c</em>lude rn#in<em>c</em>lude rnrnint main(int arg<em>c</em>, <em>c</em>har *argv[])rnrn HINSTANCE hInstan<em>c</em>e = LoadLibrary("hello.dll");rn if(hInstan<em>c</em>e!=NULL)rn rn typedef int (WINAPIV* GetCountFun<em>c</em>)(void);rn GetCountFun<em>c</em> GetCount=(GetCountFun<em>c</em>)GetPro<em>c</em>Address(hInstan<em>c</em>e,"GetCount");rn int <em>c</em>ount=GetCount();rn printf("%d",<em>c</em>ount);rn rn //FreeLibrary(hInstan<em>c</em>e); rn return 0;rnrn[/<em>c</em>ode]rn2、用<em>c</em><em>写</em>的dll代码rn(1) dll.hrn[<em>c</em>ode=C/C++]rn#ifndef _DLL_H_rn#define _DLL_H_rnrn#if BUILDING_DLLrn# define DLLIMPORT __de<em>c</em>lspe<em>c</em> (dllexport)rn#else /* Not BUILDING_DLL */rn# define DLLIMPORT __de<em>c</em>lspe<em>c</em> (dllimport)rn#endif /* Not BUILDING_DLL */rnrnDLLIMPORT WINAPIV int GetCount(void);rnrn#endif /* _DLL_H_ */rn[/<em>c</em>ode]rn(2) dllmain.<em>c</em>rn[<em>c</em>ode=C/C++]rn#in<em>c</em>lude rn#in<em>c</em>lude rn#in<em>c</em>lude rn#in<em>c</em>lude "dll.h"rnrnDLLIMPORT WINAPIV int GetCount(void)rn rn return 10020;rnrnrnBOOL APIENTRY DllMain (HINSTANCE hInst /* Library instan<em>c</em>e handle. */ ,rn DWORD reason /* Reason this fun<em>c</em>tion is being <em>c</em>alled. */ ,rn LPVOID reserved /* Not used. */ )rnrn swit<em>c</em>h (reason)rn rn <em>c</em>ase DLL_PROCESS_ATTACH:rn break;rnrn <em>c</em>ase DLL_PROCESS_DETACH:rn break;rnrn <em>c</em>ase DLL_THREAD_ATTACH:rn break;rnrn <em>c</em>ase DLL_THREAD_DETACH:rn break;rn rnrn /* Returns TRUE on su<em>c</em><em>c</em>ess, FALSE on failure */rn return TRUE;rnrnrn[/<em>c</em>ode]rn3、<em>delphi</em>开发的dll源代码rn[<em>c</em>ode=Delphi(Pas<em>c</em>al)]rnLibrary hello;rnUsesrn ShareMem,rn SysUtils,rn Classes;rnrnFun<em>c</em>tion GetCount(): integer; Cde<em>c</em>l; Export;rnBeginrn Result := 10010;rnEnd;rnrnExportsrn GetCount;rn$R *.resrnBeginrnEnd.rn[/<em>c</em>ode]rnrn
用DELPHI调用C的DLL时出的问题!!!!!
FormularyEntry(<em>c</em>har* InHosNo,<em>c</em>har* BillNo,<em>c</em>har*ErrorMsg) :rnrn我在DELPHI中<em>调用</em>Dll中的该函数,应该怎么声明?rnrn<em>c</em>har* InHosNo,<em>c</em>har* BillNo:是输入的rnrn<em>c</em>har*ErrorMsg:是输出的 rnrn“A<em>c</em><em>c</em>ess violation at address 1000AB6D in module 'Dblib.Dll'.Read ofrnaddress FFFFFFFF.”rnrn出错信息~
C的DLL在Delphi中调用出现乱码,何解?
C函数的声明:rnint _std<em>c</em>all TA_ReadCardSimple(A<em>c</em><em>c</em>ountMsg * pA<em>c</em><em>c</em>Msg);rnA<em>c</em><em>c</em>ountMsg的数据结构为rnrntypedef stru<em>c</em>trnrn <em>c</em>har Name[21]; rn <em>c</em>har SexNo[2];rn <em>c</em>har DeptCode[19];rn unsigned int CardNo; rn unsigned int A<em>c</em><em>c</em>ountNo; rn <em>c</em>har StudentCode[21];rn <em>c</em>har IDCard[21]; rn <em>c</em>har PID[3]; rn <em>c</em>har IDNo[13]; rn int Balan<em>c</em>e; rn <em>c</em>har Password[7]; rn <em>c</em>har ExpireDate[7]; rn unsigned short SubSeq; rn <em>c</em>har IsOpenInSys; rn short TerminalNo; rn short RetCode; rn A<em>c</em><em>c</em>ountMsg;rnrnrn我在Delphi中的<em>调用</em>:rnfun<em>c</em>tion TA_ReadCardSimple(pA<em>c</em><em>c</em>Msg:p<em>c</em>har):integer;Std<em>c</em>all;external 'AIO_API.dll';rni:integer;rngetmem(pA<em>c</em><em>c</em>Msg,512);rnTA_ReadCardSimple(pA<em>c</em><em>c</em>Msg);rnshowmessage(String(pA<em>c</em><em>c</em>Msg)); //此句的信息为乱码,且每次都不一样rnrn请问如果我要得到返回的数据结构之一的字段时,该如何处理?
关于DELPHI调用C的DLL参数类型的问题
现在我要用DELPHI <em>调用</em>C<em>写</em>的DLL 请问下面在C中的参数DELPHI中我要用什么来匹配哦rnvoid ** , <em>c</em>har * , unsign <em>c</em>har *, void * rn请高手指点 谢谢了。 还有它用的是 C 协议 我在DELPHI 函数申明的时候应该用STDCALL 还是什么关键字 ??
delphi调用C的dll的参数问题
我用C<em>写</em>的几个函数,其定义如下:rnDLLIMPORT void setMyPCName(<em>c</em>har *<em>c</em>_name)rnrn str<em>c</em>py(p<em>c</em>Name, <em>c</em>_name);rnrnrnDLLIMPORT void setMyPCFileList(<em>c</em>har **p)rnrn pPathList=p;rnrnrnDLLIMPORT void stopMyPC( )rnrn TerminateThread(hControlThread , 0) ;rn TerminateThread(hDataThread , 0);rn TerminateThread(hBrd<em>c</em>stThread , 0);rnrnDLLIMPORT int startMyPC( )rnrnrn这是那个几个函数的定义rn那么要怎么样<em>调用</em>呢??rn我用<em>delphi</em><em>调用</em>时,rnp:stringrnp := 'ok'rnsetMyPCName(@p)rn会出现乱码,请问是怎么回事(注:setMyPCName是绝对可靠的,用别的工具测过很多次的)rn是不是<em>调用</em>方式的问题比如<em>c</em>de<em>c</em>l std<em>c</em>all fast<em>c</em>all (注:我的dll是有控制台编译的)rn我现在很急,程序明天就要发到美国去的,在线等,希望哪位高人看到了,并且知道帮忙解决一下,rn也可以留下QQ之类,有什么问题我再来请教,感激中!!!rnrn谢谢了!!!!!!rn
delphi如何调用c的DLL中的回调函数?急!!!
现在有一个<em>c</em><em>写</em>的DLL,dll接口的头文件如下:rnrn#ifdef __<em>c</em>plusplusrnextern "C" rn#endifrnrnrn#in<em>c</em>lude rn#if defined(WIN32) || defined(_WIN32_WCE)rn#in<em>c</em>lude rn#in<em>c</em>lude rn#elsern#in<em>c</em>lude rn#endifrnrn#ifdef BUILDING_DLLrn#if defined(WIN32) || defined(_WIN32_WCE)rn# define EXPORT _std<em>c</em>all _de<em>c</em>lspe<em>c</em>(dllexport)rn#elsern# define EXPORTrn#endifrn#elsern# define EXPORTrn#endifrnrnrn#define IAXC_EVENT_BUFSIZ 256rnstru<em>c</em>t iax<em>c</em>_ev_levels rn float input;rn float output;rn;rnrnstru<em>c</em>t iax<em>c</em>_ev_text rn int type;rn int <em>c</em>allNo; /* <em>c</em>all number for IAX text */rn <em>c</em>har message[IAXC_EVENT_BUFSIZ];rn;rnrnstru<em>c</em>t iax<em>c</em>_ev_<em>c</em>all_state rn int <em>c</em>allNo;rn int state;rn int format;rn <em>c</em>har remote[IAXC_EVENT_BUFSIZ];rn <em>c</em>har remote_name[IAXC_EVENT_BUFSIZ];rn <em>c</em>har lo<em>c</em>al[IAXC_EVENT_BUFSIZ];rn <em>c</em>har lo<em>c</em>al_<em>c</em>ontext[IAXC_EVENT_BUFSIZ];rn;rnrnstru<em>c</em>t iax<em>c</em>_netstat rn int jitter;rn int lossp<em>c</em>t;rn int loss<em>c</em>nt;rn int pa<em>c</em>kets;rn int delay;rn int dropped;rn int ooo;rn;rnrnstru<em>c</em>t iax<em>c</em>_ev_netstats rn int <em>c</em>allNo;rn int rtt;rn stru<em>c</em>t iax<em>c</em>_netstat lo<em>c</em>al;rn stru<em>c</em>t iax<em>c</em>_netstat remote;rn;rnrnstru<em>c</em>t iax<em>c</em>_ev_url rn int <em>c</em>allNo;rn int type;rn <em>c</em>har url[IAXC_EVENT_BUFSIZ];rn;rnrnstru<em>c</em>t iax<em>c</em>_ev_video rn int <em>c</em>allNo;rn int format;rn int width;rn int height;rn unsigned <em>c</em>har *data;rn;rnrnstru<em>c</em>t iax<em>c</em>_ev_registration rn int id;rn int reply;rn int msg<em>c</em>ount;rn;rnrntypedef stru<em>c</em>t iax<em>c</em>_event_stru<em>c</em>t rn stru<em>c</em>t iax<em>c</em>_event_stru<em>c</em>t *next;rn int type;rn union rn stru<em>c</em>t iax<em>c</em>_ev_levels levels;rn stru<em>c</em>t iax<em>c</em>_ev_text text;rn stru<em>c</em>t iax<em>c</em>_ev_<em>c</em>all_state <em>c</em>all;rn stru<em>c</em>t iax<em>c</em>_ev_netstats netstats;rn stru<em>c</em>t iax<em>c</em>_ev_url url;rn stru<em>c</em>t iax<em>c</em>_ev_video video;rn stru<em>c</em>t iax<em>c</em>_ev_registration reg;rn ev;rn iax<em>c</em>_event;rnrntypedef int (*iax<em>c</em>_event_<em>c</em>allba<em>c</em>k_t)(iax<em>c</em>_event e);rnEXPORT void iax<em>c</em>_set_event_<em>c</em>allba<em>c</em>k(iax<em>c</em>_event_<em>c</em>allba<em>c</em>k_t fun<em>c</em>);rnrnrn#ifdef __<em>c</em>plusplusrnrn#endifrnrn#endifrnrnrn现在想在<em>delphi</em> 中使用 该DLL,对回调函数的定义如下:rnrnTiax<em>c</em>_event_<em>c</em>allba<em>c</em>k_t = fun<em>c</em>tion(e:iax<em>c</em>_ev_levels):integer;std<em>c</em>all;rnrnpro<em>c</em>edure iax<em>c</em>_set_event_<em>c</em>allba<em>c</em>k(fun<em>c</em>:Tiax<em>c</em>_event_<em>c</em>allba<em>c</em>k_t);std<em>c</em>all external 'iax<em>c</em>lient.dll'rnrnfun<em>c</em>tion iax<em>c</em>_event_<em>c</em>allba<em>c</em>k_t(e:iax<em>c</em>_ev_levels):integer;std<em>c</em>all;rnvarrn i:Double;rnbeginrn i:=e.input;rn showmessage('aa');rnend;rnrnrniax<em>c</em>_set_event_<em>c</em>allba<em>c</em>k(@iax<em>c</em>_event_<em>c</em>allba<em>c</em>k_t) ; //<em>调用</em>回调函数rnrnrn在执行回调函数的时候,报内存异常。请高手指点!!!!rnrn
用C的DLL,用DELPHI怎样调用
这是Dll的函数rnBOOL WINAPI IFInitInterfa<em>c</em>e(DWORD dwCodeProto<em>c</em>ol, DWORD dwDriverProto<em>c</em>ol, LPCSTR pDriverParam);rnrn我用<em>delphi</em>怎么<em>调用</em>啊
C的Dll,在delphi里面调用出错,帮忙看一下
C<em>写</em>的Dll,有个输出函数参数是数组类型,是这样的rnbool Cal<em>c</em>CRC(<em>c</em>onst unsigned <em>c</em>har buf[], int bufLen); 该dll 在VC环境下测试成功。rn我在<em>delphi</em>中是这样<em>写</em>的rnfun<em>c</em>tion Cal<em>c</em>CRC(<em>c</em>onst buf: array of byte; bufLen: integer):boolean; external "xxx.dll";rn只声明不<em>调用</em>是没有错误,如果我<em>调用</em>这个函数的话就报内存错误,我是这样<em>调用</em>的:rn-----------------------------------------------rnvar rn buf: array [0..7] of byte;rn ....rn Cal<em>c</em>CRC(buf,8);rn------------------------------------------------rn不知道是么回事。我试了一下,如果是<em>delphi</em>编<em>写</em>的函数,参数为数组类型的话,这样<em>调用</em>是成功的。rn
delphi中如何调用C的DLL,请赐教!
rnrn要开发一个接收GPRS DTU数据的管理软件,DTU厂家提供了动态链接<em>库</em>。可我不知如何<em>调用</em>它,查了一些资料也没找到明确的方法,几天也没有进展,郁闷至极。我从中选取了一个函数,恳请好心的有经验的大侠告诉我该如何做才能<em>调用</em>它,谢谢了,谢谢了......rnrnDSSendData(unsigned <em>c</em>har *pPhone,unsigned short len,unsigned <em>c</em>har * buf);rn功能:向指定电话号码的Dtu发送数据rnrn
如何用delphi调用c和vc的dll?
本人现在在做一个工业控制方面的系统,需要使用现成的dll.但这些dll是用rn<em>c</em>和v<em>c</em><em>写</em>的。请问各位,在<em>delphi</em>里如何<em>调用</em>这些dll。是不是,在dll中要向外rn提供它的一些函数。我对这些不是很清楚,希望各位高手指教。最好能给我一些有关rn实例和一些有关参考资料。我十分感谢!!!!!
delphi调用c语言的dll 急
请问各位兄弟,在<em>delphi</em>中<em>调用</em><em>c</em>语言<em>写</em>的dll时,如何把dll的.h或者.lib中定义的数据结构转换为<em>delphi</em>中相应的数据结构.先谢谢了:)
delphi中像C中的头文件怎么?如何调用
如题! 请指教。
C#怎么样调用delphi或者c的dll
C#怎么样<em>调用</em><em>delphi</em>或者<em>c</em><em>写</em>的dll????
C语言的DLL在Delphi里面调用的问题!!
我在VC++ 6.0环境下编<em>写</em>了一个DLL并导出如下:rnextern "C" _de<em>c</em>lspe<em>c</em>(dllexport)rnunsigned long GetID(long * u<em>c</em>h)rnrn *u<em>c</em>h = 10;rn return 1;rnrn然后在Delphi7里面这样<em>调用</em>:rnfun<em>c</em>tion GetID(var u<em>c</em>h: Integer): LongWord; external 'DLL.dll';rnpro<em>c</em>edure TForm1.Button1Cli<em>c</em>k(Sender: TObje<em>c</em>t);rnvarrn lw: Integer;rnbeginrn lw := 1;rn GetID(lw);rn ShowMessage(IntToStr(lw));rnend;rn点击按钮后对话框显示的值是1,而不是DLL里修改后的10,这是怎么回事呀?
DELPHI中如何调用这个C的DLL中函数
rnrnDLL文件名:join.dllrn以下是头文件join.h中这个函数的原型rnrn函数原型rnint <em>c</em>mpp_login(<em>c</em>onn_des<em>c</em> *<em>c</em>onn,<em>c</em>mppe_login *<em>c</em>l);rnrnrnrn其中<em>c</em>onn_des<em>c</em> 定义如下:rnttypedef stru<em>c</em>t <em>c</em>onn_des<em>c</em> <em>c</em>onn_des<em>c</em>;rnstru<em>c</em>t <em>c</em>onn_des<em>c</em>rn dpl_so<em>c</em>ket_t so<em>c</em>k;rn unsigned long seq;rn int status;rn <em>c</em>har a<em>c</em>t_flag;rn;rnrn<em>c</em>mppe_login 定义如下:rnstru<em>c</em>t <em>c</em>mppe_loginrn <em>c</em>har i<em>c</em>p_id[CMPPE_MAX_ICP_ID_LEN+1]; rn <em>c</em>har i<em>c</em>p_auth[CMPPE_AUTH_LEN+1]; rn dpl_uint8_t i<em>c</em>p_bind_type; rn dpl_uint8_t if_version; rn dpl_uint32_t i<em>c</em>p_timestamp; rn;rnrnrn
我是用delphi调用一个c的命令???
我是用<em>delphi</em><em>调用</em>一个<em>c</em><em>写</em>的命令???rn我用WinExeC('F:\jkzb\jiankong\jk2.exe',SW_ShowNormal)命令<em>调用</em>成功后,我还要在dos下输入一个参数,才能在dos下输出结果。我该怎样在<em>delphi</em>下控制其输入的参数和捕捉DOS的输出结果??谢谢!!
软件测试 黑盒
对初学软件测试的人来说应该会有用处的哦!!
黑盒测试报告
用QTP验证用户登录功能,该测试项目主要针对登录系统用户登录界面的登录功能进行测试。用户登录界面包括了用户名、密码标签,用户名、密码输入框,以及登录按钮。假设该系统只有一个用户,因此只有一个用户名和一个密码(用户名admin,密码123456),该测试项目在这个基础上,对用户名、密码输入的各种情况进行测试,之后比较最后结果与预期结果,达到测试这个登录功能的目的。
黑盒测试方法
一、<em>黑盒</em>测试概念 <em>黑盒</em>测试又称之为功能测试,是测试最基础的一种测试;这种测试将测试对象看作是一个黑匣子,在不考虑程序内部结构或者其他内部特殊情况下,把所有可能的输入都作为测试情况来检验程序功能是否符合需求规格说明书。 二、<em>黑盒</em>测试方法 为了能够更好的覆盖测试场景,主要有以下几种设计测试用例的方法。 1.等价类划分法—将所有可能的数据划分成若干个等价类,然后从每个部分中选取具有代表性的数据当做测试用...
黑盒测试经验
1、充分熟悉被测对角 1)了解特性的由来 2)了解特性的应用场景 3)了解特性相互关联 4)了解实际的组网方式 5)了解接口的协议内容 6)了解内部状态变迁   2、对测试进行详细的分类 功能性、安全性、性能、易用性、可靠性......   3、测试点的确定 测试点是在对测试对象进行分析的基础上得出测试重点,可以看成测试用例的标题。 测试点能清晰的反映用例设计者的思路,便
黑盒测试设计
Bla<em>c</em>k Box Software TestingPa<em>c</em>ifi<em>c</em> Northwest Software QualityConferen<em>c</em>e 2003byCem Kaner, J.D., Ph.D.Professor of Software EngineeringFlorida Institute of Te<em>c</em>hnologyandJames Ba<em>c</em>hPrin<em>c</em>ipal, Satisfi<em>c</em>e In<em>c</em>.
黑盒和白盒测试
<em>黑盒</em>测试:是测试中的比较重要的手段。又称为数据驱动的测试或者输入输出驱动测试。 所谓<em>黑盒</em>,也就是说相当于把一个东西用一个<em>黑盒</em>子装着,就比如说手机,外表一个壳子,里面的电路结构我们并不知道,这个<em>黑盒</em>也是这个意思,那么我们应该怎样来发现内部存在怎么样的问题呢?是否符合我们的要求?这就需要测试,这种在不知道内部结构的情况下进行的测试叫做<em>黑盒</em>测试。 怎么测试? 测试的标准就是“穷举输入测试”。 ...
应用程序初始化COM的问题???
一个应用程序在InitInstan<em>c</em>e中进行COM初始化,rn1.使用AfxOleInit进行初始化,则在程序中可以使用Axtivex控件,但程序运行一段时间后就会出现程序莫名死掉的现象(就是对任何操作都不响应);rn2.使用CoInitializeEx进行初始化,则程序不会死掉,但是一使用A<em>c</em>tivex控件程序就会异常退出;rn有谁知道这是怎么回事???
调用C的DLL问题
'typedef stru<em>c</em>t _state_nowrn' unsigned <em>c</em>har ifTel:1;rn' unsigned <em>c</em>har ifRing:1;rn' unsigned <em>c</em>har ifError:1;rn' unsigned <em>c</em>har ifDtmf:1;rn' unsigned <em>c</em>har dtmf:4;rn' unsigned <em>c</em>har hd;rn' STATE_NOW;rnrn'功能:查询状态rn'入口:1 port, 端口号(0-7 对应 USB口的64-71),state 状态rn'出口:1 成功;0 失败。rn'int WINAPI GetKHTState(int port, STATE_NOW * state)rnrn别人用VB<em>写</em>的rnDe<em>c</em>lare Sub GetKHTState Lib "mtudll.DLL" (ByVal port As Long, ByRef state As Integer)rnrnrn我用DELPHI来<em>调用</em>的代码如下rn typern STATE_NOW=pa<em>c</em>ked re<em>c</em>ordrn ifTel:<em>c</em>har;rn ifRing:<em>c</em>har;rn ifError:<em>c</em>har;rn ifDtmf:<em>c</em>har;rn dtmf:array[1..4] of <em>c</em>har;rn hd:p<em>c</em>har;rn end;rn PSTATE_NOW=^STATE_NOW;rnrnfun<em>c</em>tion GetKHTState(port:integer; state:PSTATE_NOW):integer;std<em>c</em>all; external 'mtudll.DLL' name 'GetKHTState';rnrnVarrnst:pSTATE_NOW;rnbeginrnif GetKHTState(64,st)=1 then //这里执行时为真,说明返回成功rn edit1.Text :=st.ifTel //可是没有得到任何数据,是空的rnrn我错在那里,应该什么办?rn很急,帮帮忙呀?rn
C#调用C的dll
我的步骤是这样的,大家帮忙看看。rn1。把<em>c</em><em>写</em>的dll拷贝到<em>c</em>#工程的bin的debug下面。rn2。<em>c</em>的头文件如下rnextern "C" rnAMI_UTIL_API long AMI_UTIL_API_CALL getPropertyName(<em>c</em>onst <em>c</em>har* propertyName1, <em>c</em>har* propertyName2, int propertyNameLength);rnrn所以,在<em>c</em>#的代码里面,如下rn[DllImport("AmiUtil.dll", EntryPoint = "getPropertyName", CharSet = CharSet.Uni<em>c</em>ode, CallingConvention = CallingConvention.StdCall)]rnprivate stati<em>c</em> extern long getPropertyName(string propertyName1, string propertyName2, int propertyNameLength);rn3。<em>调用</em>的时候,我<em>写</em>成如下rnstring str1, str2;rnnPropertyNameLength = 0;rngetPropertyName(str1, str2, nPropertyNameLength))rnrnrn正确的步骤和<em>写</em>法应该是怎么样的?
vc 调用C的lib
用C<em>写</em>的一个函数, a.<em>c</em>rnrn#in<em>c</em>lude rnrnvoid test()rnrn printf("test lib");rnrnrnrn在v<em>c</em>工程中怎样<em>调用</em>该lib<em>库</em>,,rn我在link里设置了,但是<em>调用</em>的是时候老提示 找不到函数,,rn请给位赐教。。。rnrnrnrn
怎么调用C的DLL?
DL.<em>c</em>rnrntypedef stru<em>c</em>t <em>c</em>har week;<em>c</em>har yearrn B;rnrnint a(int a1,B* b);rnrnVFPrnrnLdll="DL.dll" &&dll和程序不存在目录问题rnDECLARE Integer a IN &Ldll Integer,Integerrn说没找到B的入口rn不知道怎么<em>调用</em>.rn
VB调用C的DLL
有一个C<em>写</em>的DLL rnint RunSeries(unsigned <em>c</em>har* lpszS<em>c</em>rColorImg, int height,int width,int mode, LEUCCYTO1 Leu<em>c</em>Char[]); rnLEUCCYTO1 是一个结构体。rn typedef stru<em>c</em>t rn double Nu<em>c</em>Rough;rn double <em>c</em>yt<em>c</em>olor;rn double diffr;rn double CytoRoundness;rn double CellSize;rn double Nu<em>c</em>Roundness;rn double Nu<em>c</em>RoundnessD;rn double Nu<em>c</em>RoundnessM;rn double Nu<em>c</em>SizeRate;rn double dis<em>c</em>rimNu<em>c</em>;rn double dis<em>c</em>rimCyto;rn int x;rn int y;rn int Nu<em>c</em>Count;rn int Nu<em>c</em>TotalPixel;rn int MaxNu<em>c</em>;rn int Nu<em>c</em>Diff;rn int CellTotalPixel;rn int size;rn int meanr;rn int maxr;rn int minr;rn int seedl;rn int <em>c</em>ell<em>c</em>lass;rn unsigned <em>c</em>har rgb[3];rn BOOL a<em>c</em>iDoubt;rn int bw_1;rn LEUCCYTO1;rn在C中<em>调用</em>语句rnrnunsigned <em>c</em>har buff[1024 * 768 * 3];rn<em>c</em>ell_num = RunSeries((unsigned <em>c</em>har*)buff, height,width,0,Leu<em>c</em>Char1); rnrn现在用VB <em>调用</em>rnPubli<em>c</em> Type LEUCCYTO1rn Nu<em>c</em>Rough As Double rn <em>c</em>yt<em>c</em>olor As Double rn diffr As Double rn CytoRoundness As Double rn CellSize As Double rn Nu<em>c</em>Roundness As Double rn Nu<em>c</em>RoundnessD As Double rn Nu<em>c</em>RoundnessM As Double rn Nu<em>c</em>SizeRate As Double rn dis<em>c</em>rimNu<em>c</em> As Double rn dis<em>c</em>rimCyto As Doublern x As Long rn y As Long rn Nu<em>c</em>Count As Long rn Nu<em>c</em>TotalPixel As Long rn MaxNu<em>c</em> As Long rn Nu<em>c</em>Diff As Long rn CellTotalPixel As Long rn size As Long rn meanr As Long rn maxr As Long rn minr As Long rn seedl As Long rn <em>c</em>ell<em>c</em>lass As Long rn rgb(1 To 3) As Byte rn a<em>c</em>iDoubt As Long rn bw_1 As Long rnEnd TypernrnDe<em>c</em>lare Fun<em>c</em>tion RunSeries Lib "C:\sbtx\HemanalyDll4.dll" (ByRef lpszS<em>c</em>rColorImg As String, ByRef height As Long, ByRef width As Long, ByRef mode As Long, ByRef Leu<em>c</em>Char() As LEUCCYTO1) As Longrnrn<em>调用</em>语句rnDim KK As Stringrn KK = String(2359297, Chr(0))rnI = RunSeries(KK, 768, 1024, 0, Leu<em>c</em>Char1)rnrn一直运行不了,报“VB 遇到问题需要关闭”,请高手帮忙看下是那里出了问题。
vb调用C的DLL
C<em>写</em>的函数:rn int DataRe<em>c</em>eive( <em>c</em>har *pVarPara, <em>c</em>har *pRetInfo )rn rn ...rn rn pVarPara为入口参数,pRetInfo为出口参数。rnrn VB中<em>调用</em>:rn Dim i As Integerrn Dim strVar As Stringrn Dim strRetInfo As String * 10rnrn i = DataRe<em>c</em>eive(strVar, strRetInfo)rnrn strVar入口参数能传进去值,并且执行rn 问题: 1、i 接收不到返回值;rn 2、出口参数strRetInfo接收不到值。rnrn 请高手执教,有兴趣我们共同探讨,谢谢!!rnrnrnrnrnrnrnrnrnrnrn
C调用自己的动态
自己做了libhello.so<em>库</em>后,<em>写</em>了个简单的测试代码,将测试代码和<em>库</em>文件放到了同一路径下,$g<em>c</em><em>c</em> main.<em>c</em> -L. -lhello,结果运行后报错,./a.out: error while loading shared libraries: libhello.so: <em>c</em>annot open shared obje<em>c</em>t file: No su<em>c</em>h file or dire<em>c</em>tory 以下
C# 调用 C 的DLL
'int __std<em>c</em>all GetBasi<em>c</em>Info(HANDLE i<em>c</em>dev,unsigned long &CardSN); rnPrivate De<em>c</em>lare Fun<em>c</em>tion GetBasi<em>c</em>Info Lib "CMCC.dll" (ByVal i<em>c</em>dev,ByRef CardSN&) As Longrn rn上面是 VB 6.0 中<em>调用</em> C DLL的代码 rn------------------------------------------------------------------------------------ rn那么 C# 遇到 &CardSN 该怎么<em>写</em>呢,请教,不胜感激 rn
初始化COM遇到的问题。
【1】COM<em>库</em>的初始化rn我们可以使用AfxOleInit()来初始化COM<em>库</em>,这项工作通常在CWinApp::InitInstan<em>c</em>e()的重载函数中完成,请看如下代码:rnrnrnBOOL CADOTest1App::InitInstan<em>c</em>e()rnrnAfxOleInit();rn...... rnrnrn请问CWinApp::InitInstan<em>c</em>e()的重载函数到底是在哪里呢?rnrn不胜感激!
黑盒测试用例
关于程序开发的<em>黑盒</em>测试,应该是可以使用于任何程序开发
840d简明教程下载
840d简明 初步教程 相关下载链接:[url=//download.csdn.net/download/lshj0201/5120078?utm_source=bbsseo]//download.csdn.net/download/lshj0201/5120078?utm_source=bbsseo[/url]
myeclipse10注册机下载
myeclipse 9.1、10 破解 激活,java编写,适用于装有java环境的各种操作系统,win,linux,maxos 相关下载链接:[url=//download.csdn.net/download/liukun286251013/5573879?utm_source=bbsseo]//download.csdn.net/download/liukun286251013/5573879?utm_source=bbsseo[/url]
VC通过ODBC连接数据库的图书馆管理系统下载
VC通过ODBC连接数据库的图书馆管理系统 相关下载链接:[url=//download.csdn.net/download/u011559440/6568153?utm_source=bbsseo]//download.csdn.net/download/u011559440/6568153?utm_source=bbsseo[/url]
相关热词 c# stream 复制 android c# c#监测窗口句柄 c# md5 引用 c# 判断tabtip 自己写个浏览器程序c# c# 字符串变成整数数组 c#语言编程写出一个方法 c# 转盘抽奖 c#选中treeview
我们是很有底线的