2 lhgletter lhgletter 于 2015.06.06 15:56 提问

VFP9编译的多线程文件(DLL)的问题

VFP9编译的多线程文件(DLL),能不能独立与程序结全,而不要原来的.PRG文件,如果能相对会保密一些重要的程序,我一旦将生成的它的.PRG程序移开,整个程序一编译,马上就出错了?

2个回答

lhg1094460152
lhg1094460152   2015.06.07 00:16
已采纳

foxpro的DLL运行时可能必须保留原来生成DLL的文件,但你可以以下方法:
http://www.cnblogs.com/maxchan/archive/2007/10/12/922129.html
FLL – C++与VFP 双向混合编程

lhgletter
lhgletter   2015.06.07 07:06

新建testadd文件夹

拷贝pro_ext.h,winapims.lib到testadd文件夹

这两个文件在“盘符:\Program Files\Microsoft visual foxpro 9\Samples\API”目录下

在testadd文件夹里新建testadd.c
// 注意:不要用向导建成testadd.cpp

#include "pro_ext.h"
// 注意:如果写成#include <pro_ext.h>,需要把pro_ext.h拷贝到Visul C++之Include文件夹

void TestAdd(ParamBlk FAR *parm)
{
   int x1;
   x1 = parm->p[0].val.ev_long + parm->p[1].val.ev_long;
   _RetInt(x1,10);
}

FoxInfo myFoxInfo[] = {
   {"TESTADD", (FPFI)TestAdd,2,"I,I"},
};

FoxTable _FoxTable={
(FoxTable *)0,sizeof(myFoxInfo)/sizeof(FoxInfo),myFoxInfo
};

双击testadd.c打开Visual C++ 6.0

Build
--> Rebuild All

Build
--> Set Active Configuration...
--> testadd - Win32 Release

Project
--> Setting...

C/C++
--> Porject Options:
--> 把 /ML 改为 /MD
--> 增加 /Gr
// 注意:因Vfp要求fastcall,必须加/Gr选项

Link
--> Object/library modules:
--> 增加 winapims.lib
--> Porject Options:
--> 增加 /dll
OK

Build
--> Rebuild All

进入vfp验证一下:
set libr to release\testadd.dll
?testadd(1,2)

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!