1. 编制DLL文件 ,保存为Temp.prg

Define Class vfptools As Session OlePublic
    Procedure Add As Integer
    Lparameters p1,p2
    Return p1 + p2
    Endproc
Enddefine

2. 编制生成Project文件MyFox.pjt

Build Project myfox From temp.prg

3. 生成 DLL文件 MyFox.dll

Build Dll myfox From myfox

4.调用本DLL

Local loCom As 'MYFOX.VFPTOOLS'
loCom = Createobject('MYFOX.VFPTOOLS')
? LOCOM.Add (2,3)

5.结果

5

这样就可以了,而且在VFP编写代码的时候,当用到这个DLL还会智能提示DLL内部的函数

* ==============================================================================================================================

有两种 DLL 文件,一种是用 Declare 声明然后调用,这种文件 Copy 了就能用,但不能用智能提示,只能用专门的工具查看里面有什么东西,这种 Dll 一般是用 C 编写的。

另外一种是 COM 方式的 Dll ,用 Createobjectex() 或 Createobject() 调用,对象名的两部分组成,也不能直接看出,需要开发者提供,下面就可以用智能提示了。文件要注册(regsvr32),这种 Dll 许多语言都可以开发,也都可以调用,VFP 开发的 Dll 就属于这种。
能调用 COM 组件的开发工具都可以使用这种 Dll

Local loCom 
loCom = Createobject('Mydll.Mydata')
*!* 示例:
* 首先建一个工程,如MyDll,
* 然后建一个主程序,如MyDllMain,
* 然后在这个主程序里写如下代码:
**********取得表中记录总数**********
Define Class MyData As Session OlePublic && 如果是VFP6-SP5以下,把SessionN改为Custom
    Procedure GetDataCount
    Lparameters tcTable
    Select 0
    Select Count(*) From (tcTable) Into Array curData
    Use In (tcTable)
    Return Alltrim(Str(curdata))
    Endproc
Enddefine

编译时选择连编成DLL。

在VFP中调用这个DLL:

Local loCom 
loCom = Createobject('Mydll.Mydata')
? loCom.GetDataCount('temp1') && temp1为表名
Release loCom
loCom = Null
Return

注:
1.session只能在VFP6.0+SP5开始才能使用,建议使用7.0或更高版本。若非要用6.0,则必须打补丁,或改用CUSTOM类。
2.编译成的DLL,与EXE一样,要用运行库,还必须同时发布 VFP[x]T.Dll文件([x]可为6、7、8或9)。
3.如果感觉用DLL不方便,那么可以编译成用vfp的exe文件,直接在其他开发工具中调用执行,只要定义数据接口就行。如:其他开发工具调用vfp的exe程序,vfp程序把结果输出到一个txt文件中,然后再由其他开发工具进行读取即可。

【转载】VFP编写DLL,并调用的更多相关文章

  1. 如何用VC编写供PB调用的DLL

    和编写一般的DLL方法相同,需要注意以下两点: (1)调用约定 c函数有_stdcall._cdecl._fastcall等多种调用约定,调用约定用来说明函数参数的压栈顺序和由谁(函数自身还是调用者) ...

  2. QT编写DLL给外部程序调用,提供VC/C#/C调用示例(含事件)

    最近这阵子,接了个私活,封装一个开发包俗称的SDK给客户调用,查阅了很多人家的SDK,绝大部分用VC编写,而且VC6.0居多,估计也是为了兼容大量的XP用户及IE浏览器,XP自带了VC6.0运行库,所 ...

  3. DLL DEF文件编写方法 VC++ 调用、调试DLL的方法 显式(静态)调用、隐式(动态)调用

    DLL 文件编写方法: 1.建立DLL工程 2.声明.定义要导出的函数 BOOL WINAPI InitDlg( HWND hTabctrl,TShareMem* pTshare,CRect* prc ...

  4. Delphi调用C# 编写dll动态库

    Delphi调用C# 编写dll动态库 编写C#dll的方法都一样,首先在vs2005中创建一个“类库”项目WZPayDll, using System.Runtime.InteropServices ...

  5. C++编写 动态链接库dll 和 调用dll

    参考:https://jingyan.baidu.com/article/ff42efa92c49cfc19e2202fd.html 和htps://jingyan.baidu.com/article ...

  6. delphi编写dll心得, 谢谢原作者的分享。转

    delphi编写dll心得 1.每个函数体(包括exports和非exports函数)后面加 'stdcall;', 以编写出通用的dll2.exports函数后面必须加'export;'(放在'st ...

  7. C++编写DLL的方法

    http://files.cnblogs.com/files/profession/DllTest.zip 在写C++程序时,时常需要将一个class写成DLL,供客户端程序调用.这样的DLL可以导出 ...

  8. DLL中调用约定和名称修饰(一)

    DLL中调用约定和名称修饰(一) 调用约定(Calling Convention)是指在程序设计语言中为了实现函数调用而建立的一种协议.这种协议规定了该语言的函数中的参数传送方式.参数是否可变和由谁来 ...

  9. 如何编写Dll(用命令行编译加深理解)

    DLL的优点 简单的说,dll有以下几个优点: 1)      节省内存.同一个软件模块,若是以源代码的形式重用,则会被编译到不同的可执行程序中,同时运行这些exe时这些模块的二进制码会被重复加载到内 ...

随机推荐

  1. do-while循环的使用

    一.循环结构的4个要素 ① 初始化条件 ② 循环条件 --->是boolean类型 ③ 循环体 ④ 迭代条件 二.do-while循环结构: ①do{ ③; ④;}while(②); 执行过程: ...

  2. Vue学习之--------深入理解Vuex、原理详解、实战应用(2022/9/1)

    @ 目录 1.概念 2.何时使用? 3.搭建vuex环境 3.1 创建文件:src/store/index.js 3.2 在main.js中创建vm时传入store配置项 4.基本使用 4.1.初始化 ...

  3. Vue学习之--------列表渲染、v-for中key的原理、列表过滤的实现(2022/7/13)

    文章目录 1.基本列表 1.1 基本知识 1.2 代码实例 1.3 测试效果 2.key的原理 2.1基本知识 2.2 代码实例 2.3 测试效果 2.4 原理图解 3.列表过滤 3.1 代码实例 3 ...

  4. 4.httprunner-参数化和数据驱动

    前言 参数化在config中使用parameters关键字 httprunner2.x 是在testsuite中实现参数化 httprunner3.x 是在testcase中的config实现参数化 ...

  5. offset新探索:双管齐下,加速大数据量查询

    摘要:随着offset的增加,查询的时长也会越来越长.当offset达到百万级别的时候查询时长通常是业务所不能容忍的. 本文分享自华为云社区<offset新探索:双管齐下,加速大数据量查询> ...

  6. 【多服务场景化解决方案】AR虚拟技术助力智能家装

    ​ 1 .介绍 总览 本应用采用了华为图形引擎服务的AR虚拟技术,您可以在手机相机里摆放想要购置的家具家电,交互式体验让您可以轻松操控它们的3D图例,以此来确定这些家具家电是否适合摆放在您的家里. 特 ...

  7. 来啦来啦|开源 * 安全 * 赋能 - .NET Conf China 2022

    大会介绍 .NET Conf China 2022 是面向开发人员的社区峰会,延续 .NET Conf 2022 的活动,庆祝 .NET 7 的发布和回顾过去一年来 .NET 在中国的发展成果,它是由 ...

  8. C#和Halcon交互实现图片的放大和缩小

    [转载] C#和halcon实现图片的放大和缩小 e.Delta>0表示鼠标向上滚动,e.Delta<0表示向下滚动 要拖动的图像为Measure.currentImageL,可以更换. ...

  9. mysql 基础明细

    1.mysql 没有 TOP,用limit实现 2.mysql having 聚合之后,对组操作,和GROUP By搭配 mysql where  聚合之前,对表和视图操作 3.where 子句的作用 ...

  10. [排序算法] 归并排序 (C++)

    归并排序解释 归并排序 Merge Sort 是典型的分治法的应用,其算法步骤完全遵循分治模式. 分治法思想 分治法 思想: 将原问题分解为几个规模较小但又保持原问题性质的子问题,递归求解这些子问题, ...