作者:瓜哥,网名木瓜,myfll(通用扩展库)作者,很多人都得益于他的FLL类库,自myfll之后,他又做了myimg(图像库),foxjson(json解析库),fws(CGI库),是位名副其实的技术大拿,猫猫也在瓜哥的帮助下受益良多。现在瓜哥也在狐友会社群里面活跃,社群每月直播分享会即将启动。
Visual FoxPro 动态连接库(FLL)实际上是包含对 VFP API 调用的DLL。 可以使用C或者C++编写,目前MS VC系列开发工具,都是同时支持C和C++语法的,而FLL的接口只支持C语法,所以开发时接口部分需要遵循C约定,而具体实现代码则不分C或者C++,本文是写给希望使用VC开发VFP扩展库入门教程。
- 开发工具的选择
- 准备文件
- 用向导创建FLL工程
- 编写hello world函数
- 编译调试与发布
- 用一个完整功能函数进一步了解FLL开发
一、开发工具选择
做任何事情都需要选择适合自己的工具,首先是VFP端,直接就9.0 7423了,不再赘述。这里主要介绍下C/C++工具。
- Visual Studio 6.0 (VC6.0)
这是早期最主要的开发工具,好处是开发出来的FLL能兼容WinXP甚至更早的Win98,因为它的运行库是msvcrt.dll,这个库是windows的一部分,不用额外发布,缺点是win8以上开发困难,兼容性太差,特别是现在普遍用的win10和11是没法调试的,不过网上有介绍可以修改配置的方式运行,可以自行研究。 - Visual Studio 2003 (VC7.1)
这是VFP9本身的开发工具,它的运行库是msvcr71.dll,所以它是我们编写的VFP程序必需发布的DLL之一,是理想的开发工具,myfll发布早期还是VFP7,所以为了保持兼容vfp6和vfp7一直用vc6.0而没有采用此版本的原因。 - VS2008 / VS2012 / VS2015 等后续版本
这些版本对于C和C++的语法支持更加完善,特别是如果你想使用网上的多开源库,特别是基于C++代码写的库,VC6和VC7.1根本无法编译通过,这些反而能更好的支持,唯一缺点就是你还要附带发布msvcrXX.dll,基中的xx表示80,90等等 - 其他工具
可以使用多编译器配置的C-FREE、Code Blocks等。
二.准备文件
开发FLL需要两个文件,pro_ext.h 和winapims.lib ,这两个文件在VFP的sample/api文件夹下面:
三.用向导创建FLL工程
VC6篇
- 打开向导,选择动态库工程,为项目创建个名字 flltest

2. 创建空的工程

- 然后可以看到如下结构:

- 添加一个代码文件
菜单 文件-新建 选择C++Source File 输入文件名 main


目前这是一个空的文件
5.把pro_ext.h 和winapims.lib两个文件拷到main.cpp所在位置的lib下(方便把自己的代码跟库区分)


注意看目录结构
6.修改配置
菜单 工程 设置


VC编译器的配置是包括debug版本和release版本,其中debug版本包含调试信息,release是用于发布的,所以两个配置都需要修改下


至此,工程的设置基本完成。

#include <windows.h> //引入vfp库 #include "lib/pro_ext.h" #pragma comment(lib,"lib/winapims.lib") void test(ParamBlk* parm) { _PutStr("hello world"); } extern "C" { //VFP可调用的函数列表 FoxInfo funclist[] = { {"test", (FPFI) test, 0, ""}, }; //接入点 _FoxTable FoxTable _FoxTable = { (FoxTable *)0, sizeof(funclist)/sizeof(FoxInfo), funclist }; };
讯享网
这些代码,可以先复制,以便编译通过。
五.编译调试与发布
代码无误的情况下,按F5键开始运行,就会跳出如下窗口

点brows找到vfp9.exe就可以了


在vfp窗口,输入命令set library to 打开fll库,调用函数test(),就完成了。

还有个情况需要说明,这里为什么不是flltest.FLL,事实上无论是FLL还是dll只是文件扩展名的区别,本质都是一个dll,只是扩展名为fll的时候,vfp代码可以少打 .dll四个字符,文件名可以你随意更改。
调试:
如同VFP一样,在需要设置断点的地方,按下F9,则打上标记,运行到这行代码的时候如下图:

发布:
默认debug编译的dll包含调试信息,正式发布时需要生成 release版本,可以点击菜单 组建->批组建


点击全部生成,就可以了。
生成的目录结构如下:

这是debug版本

这是release版本

更多资料:www.sn58.cn




版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/119988.html