`
neo
  • 浏览: 266563 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Delphi制作DLL的注意事项

阅读更多
<把pchar转换为string可用strpas(pchar),把string转换为pchar可用pchar(string)>

在公司里有一些需要制作DLL的场合,因为熟悉、方便和简易,大多数使用Delphi来制作。现在就这个主题提出一些个人建议。

  尽量使用标准DLL接口。指的是传递的参数类型及函数返回类型不能是Delphi特有的,比如string(AnsiString),以及动态数组和含有这些类型成员的复合类型(如记录),也不能是包含有这些类型成员数据成员的对象类型,以避免可能的错误。如果使用了string类型或动态数组类型,且调用方不是Delphi程序,则基本上会报错。如果调用方是Delphi但调用方或被调用方没有在工程文件的第一包含单元不是ShareMem,也可能会出错。

  如果调用方是Delphi应用程序,则可能可以使用不包含禁止类型(string, 动态数组)数据成员的对象作为参数或返回值,但也应尽量避免。

  如果调用方与被调用方都是Delphi程序,而且要使用string或动态数组作参数,则双方工程文件的第一包含单元必须是ShareMem。(C++Builder程序的情况可能与此相同,不过没有测试过。)

  如果调用方不是Delphi程序,则string、动态数组、包含string或动态数组的复合数据类型及类实例,都不能作为参数及返回值。

  因此,为了提高DLL的复用范围,避免可能存在的错误,应当使用标准WIN32 API标准参数类型,以前使用string的变量,可以使用PChar(s)转换。动态数组则转换为指针类型(@array[0]),并加上数组的长度。

  如果因为调用方与被调用方都是Delphi程序,为了编写方便,不想进行上述转换,则推荐使用运行时包的形式。运行时包可以保证动态分配数据的正确释放。这样因为其扩展名(.bpl),显出该文件仅限于Delphi/C++Builder使用(不象DLL)。

  其次,尽量避免使用overload的函数/过程作输出,如果同一操作有多个方式,则可以让函数/过程名有少许差别,类似于Delphi中的FormatXXXX、CreateXXXX等函数及方法,如CreateByDefaultFile, CreateDefault。

  最后,作为DLL的提供者,应当提供直接编程的接口文件,如Delphi中的.pas或.dcu(最好是.pas,因为可以有注释)、C及C++中的.h和.lib。而不是让使用者们自己创建。如果非要有overload的函数/过程,这一点显得特别重要。另外,作为Delphi应用,提供的.pas文件可以是提前连接的(使用external指定DLL中的输出函数),也可以是后期连接的(使用LoadLibrary、GetProcAddress),DLL提供者提供编程接口文件,既显得正式(或HiQoS),又有保障。
分享到:
评论

相关推荐

    手把手教delphi写你的dll文件

    ### 手把手教Delphi编写DLL文件:详细教程与注意事项 #### 一、引言 在软件开发领域,DLL(动态链接库)是一种常见的技术,它允许开发者将常用功能封装成独立的模块,从而实现代码复用和资源优化。本文将详细介绍...

    利用DELPHI进行DLL制作

    7. **注意事项**: - DLL的版本管理非常重要,不同的应用程序可能依赖于不同版本的DLL,因此需要妥善处理版本冲突。 - 注意线程安全问题,如果DLL中的函数将在多线程环境下使用,需确保它们是线程安全的。 以上...

    Delphi 封装窗体成DLL

    5. **安全性和注意事项**: - 当主应用程序和 DLL 使用相同的 VCL 组件时,需确保 Delphi 版本兼容,否则可能会出现运行时错误。 - 确保正确处理资源的生命周期,比如窗体的创建和释放,避免内存泄漏。 - DLL 和...

    Delphi下写DLL大全

    **九、其他注意事项** 在 Delphi 制作的 DLL 与不同语言的程序交互时,可能会遇到兼容性问题,如数据类型转换、调用约定等。确保遵循标准的 Windows API 规范可以减少这类问题。 **十、相关资料** 学习更多关于 ...

    delphi 制作的(.rar)解压缩工具

    至于"说明.txt",这很可能是关于如何使用这个解压缩工具的指南,包含了操作步骤、注意事项以及可能的故障排除信息。用户在使用工具之前应该先查阅这份文档,以确保正确无误地进行RAR文件的解压。 总的来说,这个...

    Delphi 制作的通用升级程序

    **四、注意事项** - 安全性:确保`Upgrade.txt`的生成和访问是安全的,避免恶意修改导致错误升级或安全问题。 - 错误处理:在下载或替换文件过程中可能出现网络问题或权限问题,因此需要有良好的错误处理机制。 - ...

    C++调用delphi例子代码及说明

    在IT行业中,跨语言通信是一项常见的任务,尤其是在大型项目中,不同的组件可能由不同编程语言编写。...在阅读“制作说明.docx”和“调用说明.txt”文件时,应仔细了解每个步骤和注意事项,确保无缝集成。

    使用Regware.v4.02制作的软件注册Dll

    是一个测试工程注意事项:请将dll程序中的regware控件与key程序中的regware和regcodegenerator控件的seed1,seed2,seed3属性设置一样。同时dll程序中的regware控件与key程序中的regware控件的ProgGUID属性也设置一致...

    VST Plugin Host开发套件V1.3 For Delphi 7

    - **VSTHOST开发套件说明.txt**: 这个文本文件提供了关于如何使用开发套件的详细指导,包括安装步骤、API使用示例和注意事项。 - **音乐播放器应用例子、DLL应用例子、例子**: 这些是实际的示例项目,可以帮助...

    delphi 开发经验技巧宝典源码

    0033 调用Register过程的注意事项 24 0034 在Delphi中禁止使用result 24 0035 如何在Delphi中录制代码 24 0036 如何编译器会提示数组太大时的处理技巧 25 0037 如何对超大数字进行计算 25 0038 强类型的...

    delphi 开发经验技巧宝典源码06

    0033 调用Register过程的注意事项 24 0034 在Delphi中禁止使用result 24 0035 如何在Delphi中录制代码 24 0036 如何编译器会提示数组太大时的处理技巧 25 0037 如何对超大数字进行计算 25 0038 强类型的...

    ResourceBuilder.zip

    同时,"Readme"文件(Readme.rtf和Readme_rus.rtf)提供了详细的使用指南和注意事项,帮助新用户快速上手。 在实际使用ResourceBuilder时,开发者需要注意以下几点: 1. **资源类型选择**:ResourceBuilder支持...

    TScreenCapture

    - **Readme.txt**:通常包含了安装、使用和注意事项的简要说明。 - **capture_demo.zip**:这是一个示例项目,展示了如何在实际应用中集成和使用TScreenCapture控件。 通过学习和使用TScreenCapture,开发者不仅...

    InstallShield Express Borland Limited Edition 3.5

    "2ccc.com.txt"可能是一个文本文件,通常用于记录一些关于InstallShield Express使用过程中的指南、注意事项或开发者自定义的信息。而"ISxpress"可能是InstallShield Express的主程序或者相关配置文件,用户可以通过...

    VC++完美界面换肤方法

    #### 六、注意事项 - **代码修改**: - 实例中包含了所有的源代码,可以根据需要进行修改,例如添加从资源加载皮肤或动态换肤的功能。 - **版权问题**: - 示例中使用的VclSkin 4.93代码可能来自其他公司的成熟产品...

    keyboard_hook.rar_hook

    7. pudn.txt:可能是发布者在PUDN(一个编程资源分享网站)上发布的说明文件,可能包含了关于如何使用这个示例的指南和注意事项。 在Windows编程中,创建键盘钩子通常涉及以下步骤: 1. 使用SetWindowsHookEx函数...

    Inno Setup中文帮助.pdf

    **3.4 其他注意事项** - **命令行编译器执行:** 说明如何使用命令行工具来编译安装脚本。 - **安装命令行参数:** 指定安装程序启动时可以接收的命令行参数。 - **安装退出代码:** 定义安装完成后返回的退出状态...

Global site tag (gtag.js) - Google Analytics