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. 微软出品自动化神器【Playwright+Java】系列(五) 之 常见点击事件操作

    写在前面 明天就是周五了,这周有那么一两天心情特别不好,真的是做什么都没兴致,所以导致整个人都很丧,什么都不想做. 本打算周一就更新这篇文章的,但由于公司一直加班,每天到家很晚,都是挤时间去学,理解后 ...

  2. 如何在IDEA中自定义模板、快速生成完整的代码?

    文章目录 1.修改现有的模板 2.自定义模板 3.在代码中测试自定义模板 1.修改现有的模板 打开设置面板- settings 2.自定义模板 选择定义模板组 选择创建模板 define 代表应用的范 ...

  3. day03-2-拓展

    满汉楼03 5.拓展_多表查询 前面都是对单表进行操作 思考一个问题:如果多表查询怎么处理?例如,查看账单时,希望现实菜品名称 查询的结果从上图变为下图: 方案一 由多张表组合查询的的结果,我们仍然可 ...

  4. The XOR Largest Pair(字典树)

    ​ 题目描述 在给定的 N 个整数 A1,A2,-,AN 中选出两个进行异或运算,得到的结果最大是多少? 输入格式 第一行一个整数 N. 第二行 N 个整数 Ai. 输出格式 一个整数表示答案. 样例 ...

  5. (数据科学学习手札146)geopandas中拓扑非法问题的发现、诊断与修复

    本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 大家好我是费老师,geopandas作为在Pyt ...

  6. 关于网页实现串口或者TCP通讯的说明

    概述 最近经常有网页联系我,反馈为什么他按我说的方法,写的HTML代码,无法在chrome网页中运行.这里我统一做一个解释,我发现好多网页并没有理解我的意思. 其实,要实现在HTML中进行串口或者TC ...

  7. ajax-Xhr

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. 【题解】CF919D Substring

    题面传送门 解决思路: DP 与拓扑结合.\(f_{i,j}\) 表示到 \(i\) 位置 \(j\) 的最大次数. 将 \(a \sim z\) 转成数字 \(0\sim 25\) ,方便存储. 考 ...

  9. 解决头部使用 position:fixed; 固定定位后遮住下方内容的问题

    1.在头部下面给一个空的 div 给这个div设置高度,把页面撑开,这种方法是让头部刚好遮住的是这个空div,把内容放出来. 但是这种方法需要一点点调试高度,所以不推荐. 2.把整个要使用 posit ...

  10. 1、Docker最新入门教程-Docker概述

    1. Docker概述 Docker 是一个用于开发.运输和运行应用程序的开放平台.Docker 使您能够将应用程序与基础架构分开,以便您可以快速交付软件.使用 Docker,您可以像管理应用程序一样 ...