首页 相关文章 PowerBuilder调用Delphi写的Dll时发生的奇怪问题

PowerBuilder调用Delphi写的Dll时发生的奇怪问题

因项目需要,我用Delphi写了一个连接数据库把数据导出到Sql文件的dll,其中使用了TADOQuery组件。
  其中只有一个导出方法:
  function DataExport(path,ini_path:PChar):integer;
  
   写完之后,用delphi写了一个test.exe进行测试,发现可以正常使用。
  之后便把这个dll交给了同事,让他在PowerBuilder中调用。同事拿过去之后发现,一旦调用DataExportPB就报告无法打开目标Dll。我想可能是因为两边运行的环境不一样,随后就把test.exe拷过去试试看。奇怪的是,test.exe运行正常。
  
   为了确定问题到底出现在哪里,我又使用Python和C#测试了一下,C#下面没有问题,但是Python报告错误:
  查阅资料之后发现,如果在Delphi的Dll里面使...[ 查看全文 ]

2016-02-19 标签:
  • 在以前用 Delphi 开发的项目中,会经常用到TChart这个画图控件,它本身很强大,支持各类图,如点线图,柏拉图,柱状图等等,加上可以输出成BMP,JPEG,JPG,SVG,GIF等各种格式图片,很好用,当时也封装成比较独立的 DLL文件 。这次开发.NET程序正好派上用场。 几个关键技术点: 1 C#要以非托管方式调用DLL 2 C#把整理好的画图数据生成事先定义好格式的XML文件,传给DLL 3 DLL解析...[ 查看全文 ]
  • 我在编写一个系统时遇到了一个问题,无法在C#中调用Delphi6写的DLL,只因为DLL的参数是string类型的。然后在网上找相关的资料,还是没有结果。经过我的再三琢磨,现在已经解决,特写此文章与大家分享我的喜愉! Dellphi DLL文件: /////////////////////////////////////////////////////////////////// library mydll; uses SysUtils, Classes; {$R *.res} function Out_Char(str1:PChar;str2:PChar):Pch...[ 查看全文 ]
  •   显式例子:  ?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> unit Main;   interface   uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   Dialogs, StdCtrls, ExtCtrls, Grids, DBGrids, DB, DBTables, DBCtrls;   type   TForm1 = class(TForm) ...[ 查看全文 ]
  • 具体的DLL封装对象请看刘艺的《Delphi中的DLL封装和调用对象技术》及配书源码。 本人在使用DELPHI编制DLL过程中碰到了些奇怪的问题,现在将其列出来,仅供参考: 1、DELPHI生成的DLL工程中写到:ShareMem must be the first unit in your library's USES clause AND your project's。这里提到的是DLL工程和使用该DLL的工程都需要引用ShareMem单元。     ShareMem单元...[ 查看全文 ]
  • 标签:Delphi
      根据Delphi提供的有关 DLL编写和调用的帮助信息,你可以很快完成一般的 DLL编写和调用的 应用程序。本文介绍的主题是如何编写和调用能够传递各种参数(包括对象实例)的 DLL。例如, 主叫程序传递给 DLL一个ADOConnection 对象示例作为参数, DLL中的函数和过程调用通过该对象 实例访问数据库。 需要明确一些基本概念。对于 DLL,需要在主程序中包含 exports子句,用于向外界提供...[ 查看全文 ]
  •        首先我觉得有必要把.net平台下开发webservice进行一个比较全面的阐述,web service的最初产生是在电子商务的环境下出现的,有些问题通过传统的手段已经不容易解决,比如在应用程序之间进行商务通信、数据交换,使用DCom、CORBA等二进制机制的东西已经行不通了,姑且不说他们受各自平台的限制,比如DCom(Distribute Common Objects Model)只能在Windows平台下进行,而CO...[ 查看全文 ]
  • Calling conventions(调用约定)    在声明过程或函数时,你可以使用下面的指示字之一来指明调用约定:register、pascal、cdecl、stdcall以及safecall。比如, function MyFunction(X, Y: Real): Real; cdecl; ...       调用约定决定了参数被传递给例程的顺序,它们也影响从堆栈中删除参数、传递参数时寄存器的使用,以及错误...[ 查看全文 ]
  •   需求 :由于最近接到这样的项目,甲方他们要求我们开发的功能加入他们原先已经存在的一个PB开发的应用程序中。唯一的目的是不想有两个exe应用程序。 方案 :把Delphi的应用程序用dll的形式打包,然后在PB里调用。 设计 :         一、 PB部分                ...[ 查看全文 ]
  • 下截JNative组件 jnative.sourceforge.net/ 到这里下载JNative开源项目,我下载的是1.3.2 解压JNative-st1:chsdate isrocdate="False" islunardate="False" day="30" month="12" year="1899"1.3.2/st1:chsdate.zip 获得三个文件,分别是:JNativeCpp.dll,libJNativeCpp.so,JNative.jar 。 JNativeCpp.dll Windows下用的,拷贝到windows / system32目录下; libJNativeCpp.so Linux下的,拷贝到系统目...[ 查看全文 ]
  •   作者:e梦缘 好久发表文章了!!! 调用DLL文件中的FORM,具体实现过程如下: library Project1;uses SysUtils, Classes,Forms,windows,dialogs, Unit1 in 'Unit1.pas' {Form1};{$R *.res}function showform(formname:string):boolean;stdcall;var TheClass: TPersistentClass; aForm: TForm;begin result:=false; {如果您的Dll中有很多FORM,请在这儿注册哦 ...[ 查看全文 ]
  • 标签:Delphi
      一 Dll的制作一般步骤 二 参数传递 三 DLL的初始化和退出清理[如果需要初始化和退出清理] 四 全局变量的使用 五 调用静态载入 六 调用动态载入 七 在DLL建立一个TForM 八 在DLL中建立一个TMDIChildForM 九 示例: 十 Delphi制作的Dll与其他语言的混合编程中常遇问题: 十一 相关资料 一 Dll的制作一般分为以下几步: 1 .在一个DLL工程里写一个...[ 查看全文 ]
  • 一 Dll的制作一般分为以下几步: 1 在一个DLL工程里写一个过程或函数 2 写一个Exports关键字,在其下写过程的名称。不用写参数和调用后缀。 二 参数传递 1 参数类型最好与window C++的参数类型一致。不要用DELPHI的数据类型。 2 最好有返回值[即使是一个过程],来报出调用成功或失败,或状态。成功或失败的返回值最好为1[成功]或0[失败].一句话,与windows c++兼容。 3 用stdca...[ 查看全文 ]
  • 标签:Delphi
      在用Delphi 3.0开发软件时,出现了硬件驱动程序(DLL)中的函数和过程不能正常调用的问题,该硬件由英国Schlumberger公司生产,驱动程序用汇编语言编写的。其《编程指南》给出的Microsoft C的示范程序均能正常运行。但运行此软件时现出的错误提示为: Access violation at address ×××××××× in module…… 经仔细分析,才发现问题出现在函数调用模式上。 Delphi 3.0支持五种调用...[ 查看全文 ]
  • 标签:ASP
           在ASP文件中调用DLL   作者:陈敏杰    动态联接库(DLL)是加快应用程序关键部分的执行速度的重要方法,但有一点恐怕大部分人都不知道,那就是在ASP文件也能通过调用DLL来加快服务器的执行速度,下面我简单的介绍一下在ASP文件调用DLL的步骤。    首先,必须得有DLL文件,本例是通过VB5.0创建ActiveX DLL文件,这个文件模拟...[ 查看全文 ]
  • VC PB dll 和编写一般的DLL方法相同,需要注意以下两点: (1)调用约定 C函数有_stdcall、_cdecl、_fastcall等多种调用约定,调用约定用来说明函数参数的压栈顺序和由谁(函数自身还是调用者)来修改堆栈。关于调用约定的详细说明,请参考我转载的另一篇文章。 编写供PB调用DLL,请使用_stdcall调用约定,如下所示: extern "C" _declspec(dllexport) int _stdcall GetInt(char* name) { ... } (2)d...[ 查看全文 ]
  •   //用惯JAVA或C#的人可能对DELPHI非常生气,连基本的类型都没有,我平时工作中,经常会曾试着把一些函数集合在一起,也经常做一些属于自己的基础类型的函数,此处把它们弄出来,有不当之处,请大家点评. unit BaseClass; interface uses   SysUtils, Classes, StrUtils, IdGlobal, Math; type   TCharSet = set of char; var   TNormalCharSet: TCharS...[ 查看全文 ]
  • 标签:Delphi
      在用Delphi30开发软件时,出现了硬件驱动程序 (DLL)中的函数和过程不能正常调用的问题,该硬件由英国Schlumberger公司生产,驱动程序用汇编语言编写的。其《编程指南》给出的 Microsoft C的示范程序均能正常运行。但运行此软件时现出的错误提示为: Access violation at address ×××××××× in module…… 经仔细分析,才发现问题出现在函数调用模式上。 Delphi30支持五种调...[ 查看全文 ]
  • 标签:Delphi
      Delphi作为一种面向对象的可视化开发工具,以其开发程序的高速度和编译代码的高效率越来越受到广大编程人员的喜爱。尽管Delphi已经提供了非常强大的开发组件(VCL),但灵活使用API函数一定可以使你的程序增色不少。 状态键的检查 当今不少流行软件的编辑窗口(包括Delphi的代码编辑窗口)的底部都有一个状态条用来显示一些状态信息,比如当前光标的位置等。通常键盘的状态键...[ 查看全文 ]
  • 对使用Delphi制作DLL复用文件的建议 在公司里有一些需要制作DLL的场合,因为熟悉、方便和简易,大多数使用Delphi来制作。现在就这个主题提出一些个人建议。 尽量使用标准DLL接口。指的是传递的参数类型及函数返回类型不能是Delphi特有的,比如string(AnsiString),以及动态数组和含有这些类型成员的复合类型(如记录),也不能是包含有这些类型成员数据成员的对象类型,以避免可能的错误。...[ 查看全文 ]
  • 标签:Web开发
       //导入JAVA类包 import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; class EditFile { //默认构造函数 EditFile(){} //保存文件函数 void SaveFile(String name,String str) { try { //声明文件输出对象 FileOutputStream fos = new FileOutputStream(name); //输出...[ 查看全文 ]
手机页面 收藏网站 回到头部