Delphi7调用DelphiXE编写的DLL问题
http://bbs.csdn.net/topics/380045353
|
用DelphiXE在WIN2008下编写一个访问WebServices的DLL ws.dll,只有一个输出函数,如下:
function Login(URL:PAnsiChar; UserName: PAnsiChar; UserPass: PAnsiChar; LocalLogin: Boolean):PAnsiChar; try ShowMessage(tStr); 调用程序在XP下用DELPHI7编写, 编译都通过,运行后,提示“调用 Web 服务失败!”,应该是执行WebServices调用失败了。 但是,在Win2008下用DelphiXE编写调用程序,提示“成功”。 将D7写的调用程序拷贝到WIN2008下执行,调用成功!!!! 我怀疑问题可能出在D7调用DLL时传递的PAnsiChar与DXE不兼容?将函数改成如下过程,避免传入传出参数 GetAuthenticationSoap(True,'http://192.168.13.1/' + WSDL_Authentication,nil).Login('abc','abc',False); ShowMessage(tStr); end; 结果,测试情况和之前一样, 后来我又用C#写了一个调用程序,结果和DXE一样,在XP,WIN2008下都调用成功。 我滴个神啊! 我该怎么办? 通过procedure Login1();可以看出问题不是处在D7调用DXE写的DLL传参数问题。 我再想,是不是DXE编写的调用WebServices程序需要什么其他的库支持。 可把DXE写的调用程序和WS.DLL拷贝到XP下,调用好使,说明不缺库。 可D7写的调用程序,为什么在XP下不好使,拷贝到WIN2008下就好使? 自己都说乱了。总结一下,问题现象是: 我现在就想要 D7+WS.DLL在XP下好使,怎么办? 更多0分享到:
|
|
#1 得分:20回复于: 2011-11-12 15:53:46
dll中的函数没发现stdcall ,是笔误吗?
|
|
|
#2 得分:0回复于: 2011-11-12 15:59:51
我写的是函数实现,在定义处有。
|
|
|
#4 得分:0回复于: 2011-11-12 23:48:55
咋整的。没人呢? 提的不是地方?
|
|
|
#5 得分:40回复于: 2011-11-13 01:40:12
XE下是PAnsiChar
换成Delphi7下应该是Pchar |
|
|
#6 得分:40回复于: 2011-11-13 10:27:55
Result := PAnsiChar(GetLoginSoap(True,URL + WSDL_Login,nil).Login(UserName,UserPass,LocalLogin));
改成 Result := PAnsiChar(ansistring((GetLoginSoap(True,URL + WSDL_Login,nil).Login(UserName,UserPass,LocalLogin))); 试试 |
|
|
#7 得分:0回复于: 2011-11-13 15:39:21
谢谢两位的回复。
我觉得问题不是出在PChar 与 PAnsiChar上。 看我后来写的那个过程Login1(),不传入传出参数,调用WebServices还出同样的问题。 最令我气愤的是,一个DLL中的没有任何参数的函数,竟然被不同编译器编译的客户程序调用后,执行结果却不一样。 测试效果如下: 奇了怪了。 |
|
|
#8 得分:0回复于: 2011-11-16 10:20:58
人气不旺盛啊。
|
|
|
#9 得分:0回复于: 2011-11-16 10:29:24
UnicodeString
WideString AnsiString String PChar PAnsiChar PWideChar PUnicodeChar ? |
|
|
#10 得分:0回复于: 2011-12-02 20:21:40
搞定,问题太简单了。失误啊。
原因是DLL中没有进行COM的初始化 initialization |
|
|
#11 得分:0回复于: 2012-11-24 01:23:06
加载什么地方
|
Delphi7调用DelphiXE编写的DLL问题的更多相关文章
- C#调用C++编写的DLL函数, 以及各种类型的参数传递 (转载)
C#调用C++编写的DLL函数, 以及各种类型的参数传递 1. 如果函数只有传入参数,比如: C/C++ Code Copy Code To Clipboard //C++中的输出函数 int ...
- C#动态调用C++编写的DLL函数
C#动态调用C++编写的DLL函数 动态加载DLL需要使用Windows API函数:LoadLibrary.GetProcAddress以及FreeLibrary.我们可以使用DllImport在C ...
- 使用clr 调用C#编写的dll中的方法的全解释
使用clr 调用C#编写的dll中的方法的全解释1.数据库初始化:将下面这段代码直接在运行就可以初始化数据库了exec sp_configure 'show advanced options', '1 ...
- 通过C#去调用C++编写的DLL
这个问题缠了我2个小时才弄出来,其实很简单.当对方提供一个dll给你使用时,你需要去了解这个dll 是由什么语言写的,怎么编译的,看它的编译类型.这样即使在没有头绪时,你可以先尝使用一些比较热门的编译 ...
- C++项目中采用CLR的方式调用C#编写的dll
1.注意事项:在编写C#DLL类库时,最好不要出现相同的命名空间,否则在C++中调用可能会出现编译错误.2.将C#的源码生成的“dll”文件复制到C++项目中的Debug目录下3.将C++项目属性设置 ...
- C#调用C++编写的dll
界面还是C#写的方便点,主要是有一个可视化的编辑器,不想画太多的时间在界面上.但是自己又对C++了解的多一些,所以在需要一个良好的界面的情况下,使用C++来写代码逻辑,将其编译成一个dll,然后用C# ...
- Delphi 调用C# 编写的DLL方法
近来,因工作需要,必须解决Delphi写的主程序调用C#写的dll的问题.在网上一番搜索,又经过种种试验,最终证明有以下两种方法可行: 编写C#dll的方法都一样,首先在vs2005中创建一个“ ...
- C# 调用delphi编写的dll
技术实现 如何逐步实现动态库的加载,类型的匹配,动态链接库函数导出的定义,参考下面宏定义即可: #define LIBEXPORT_API extern "C" __declspe ...
- PB调用C#编写的DLL
C#以其简单易用,功能强大深受大家喜爱.PowerBuilder作为C/S的MIS开发工具,十分简单灵活,开发时间短,开发及维护成本低,一直是中小企业信息管理系统的首选开发工具.但是PB的局限性限制了 ...
随机推荐
- 201621123008 《Java程序设计》第十周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 1. 常用异常 结合题集题目7-1回答 1.1 自己以前编写的代码中经常出现 ...
- 简易非阻塞http服务器
说明 需要理解阻塞和非阻塞的区别,特别要注意非阻塞和异步不是一个概念,这个很容易弄错.云盘里面netty的书会讲这几个方面的区别,nodejs深入浅出关于异步编程章节里面 ...
- JAVA钩子方法+模板方法
模板方法: 写一个抽象类,这个抽象类有多个抽象方法,里面设立一个模板方法,这个模板方法也可以称之为模板算法,设立不同方法的执行顺序,封装业务流程,暴露出去: 模板方法模式的特点很好总结,它将一般性的可 ...
- mybatis学习一 环境搭建
第一步导入Jar包 第二步配置sqlMapConfig.xml文件,xml文件放在src下面 <?xml version="1.0" encoding="UTF-8 ...
- CSS-弹性布局-动画-过渡
1.弹性布局 1.项目的属性 该组属性只能设置在某项目元素上,只控制一个项目,是不影响容器以及其他项目的效果. 1.order 作用:定义项目的排列顺序,值越小,越靠近起点,默认值是0 取值:整数数字 ...
- JS高级- OOP-ES5
1. OOP 面向对象三大特点: 封装,继承,多态 封装: 问题: 构造函数可重用代码和结构定义,但无法节约内存 为什么: 放在构造函数内的方法定义,每new一次,都会反复创建副本——浪费内存 解决: ...
- python学习 day20 (3月27日)----(单继承多继承c3算法)
继承: 提高代码的重用性,减少了代码的冗余 这两个写法是一样的 Wa('青蛙').walk() #青蛙 can walk wa = Wa('青蛙') wa.walk() #青蛙 can walk 1. ...
- shell入门练习
**定义局部变量, 局部变量在退出Shell客户端时会失效** **单引号:原样输出** **双引号:如果里面有变量,会输出变量** **没有引号:输出变量** 可以在调用脚本的时候给脚本传递参数,脚 ...
- 【转】【MySQL】时间类型存储格式选择
一 前言 昨天在给开发同学做数据库设计规范分享的时候,讲到时间字段常用的有三个选择datetime.timestamp.int,应该使用什么类型的合适?本文通过三种类型的各个维度来分析,声明:本文 ...
- TCP/IP协议(7):应用层
应用层上协议有DNS.DHCP.HTTP.SSL/TLS.FTP.Telnet等. 1.DNS域名解析 DNS服务器用来解析域名从而获得对应IP地址,我们在对网络进行设置的时候如果DNS服务器没有设置 ...
