clipsdll
所属分类:Windows编程
开发工具:Visual C++
文件大小:50KB
下载次数:24
上传日期:2009-07-19 22:53:20
上 传 者:
cyzgh
说明: 专家系统的CLIPS的动态链接库,专家系统开发工具CLIPS软件,简单快捷,可以和VB、VC集成使用
(DLL OF CLIPS IN EXPERT SYSTEM)
文件列表:
CONSTRCT.C (25398, 1992-10-23)
DLLSHELL.C (346, 1993-02-21)
DXCLPFNS.C (266, 1993-01-17)
RETRACT.C (22429, 1992-11-18)
ROUTER.C (29825, 1992-08-18)
SYSDEP.C (17338, 1992-10-20)
SYSIO.C (26577, 1992-10-20)
USERFUNC.C (1610, 1993-01-20)
CLIPSDLL.DEF (9400, 1993-01-17)
CLIPSDLL.DSK (2616, 1993-01-21)
CONSTANT.H (4048, 1992-08-18)
CONSTRCT.H (5306, 1992-10-26)
DXCLPFNS.H (174, 1993-01-17)
ROUTER.H (5596, 1993-01-16)
SETUP.H (12381, 1992-12-21)
SYSDEP.H (3772, 1992-10-26)
CLIPSDLL.MAK (5787, 1993-02-21)
CLIPSDLL.PRJ (26206, 1993-01-20)
-----------------------------------------------------------------------------
Modifications to CLIPS source files for creation of a MS-Windows-based DLL
by Blake Buhlig
February 22, 1993
No copyrights exist on any files or modifications, except those belonging
to COSMIC and/or NASA, Microsoft, and Borland.
-----------------------------------------------------------------------------
This is a hastily prepared distribution, so it is very possible that I forgot
some necessary file. If so, or if you have a question or suggestion,
then you can contact me by my E-mail address (through December 1994,
anyway):
Internet: bb760597@longs.LANCE.ColoState.edu
INTRODUCTION
------------
During the summer of 1992, I began implementation of a Windows-based
expert system development tool using CLIPS v5.1. The project, which was
part of an undergraduate research program at Colorado State University,
involved interfacing CLIPS with C++ code. It was envisioned that the expert
system part of the development tool would be created with CLIPS, while the
Microsoft Windows support would be designed with Borland C++ and Application
Frameworks.
Due to various problems with statically-linking the CLIPS object code
with my C++ code, I sought to create a Dynamic Link Library out of the CLIPS
source code. This package is the result of my efforts thus far.
IMPORTANT WARNING!!!!
---------------------
It should be emphasized that THIS CODE IS NOT WELL-TESTED, and hence
any serious developer should be skeptical of every modification and creation
I have given here. All I can offer is that what I have included here did
produce a functional CLIPS DLL that has helped advance my project. However,
my project is not finished yet, which means that sometime in the
future I might discover some catastrophic problem that would force me to
somehow change or even scrap this approach altogether.
I am releasing what I have here to help everyone else trying to
create a CLIPS DLL. But if for some reason what I suggest doesn't work,
don't hold me accountable.
A POSSIBLY CATASTROPHIC BUG...
------------------------------
Before I go any further, let me point out a possible bug with this
code that may discourage you from continuing. I have noticed that I cannot
execute more than one instance of my development tool at a time without
running in to some sort of UAE. I haven't really investigated further
because in my particular application, this is a fairly minor problem.
However, your purpose for investigating the DLL approach might be to execute
multiple CLIPS processes simultaneously. If this is the case, be aware
that the bug I discovered might be a problem with the DLL involving
multiple applications calling the DLL at once.
FILES
-----
Without further delay, I will describe how you can make your own DLL.
First, note that I have included several modified files from the original
CLIPS distribution:
CONSTRCT.C CONSTANT.H
RETRACT.C CONSTRCT.H
ROUTER.C ROUTER.H
SYSDEP.C SETUP.H
SYSIO.C SYSDEP.H
Some of these files were modified specifically to facilitate the DLL; others
were changed for other purposes. In each file, I have tried to document
changes where appropriate. If I were you, though, I would run a comparison
between the original CLIPS distribution and these files, and explicitly find
out what changes I did make. When you are satisfied, replace the original
distribution files with these files.
The other files I have included add required extra support for the DLL.
Most of them will need to be modified to suit you own needs. The files
are as follows:
CLIPSDLL.MAK USERFUNC.C
CLIPSDLL.PRJ DXCLPFNS.H
CLIPSDLL.DSK DXCLPFNS.C
CLIPSDLL.DEF
DLLSHELL.C
The MAK, PRJ, and DSK files are all Borland C++ specific compiler
configuration files. If you are using MSC or some other compiler, you will
need to make modifications. Even if you are using Borland, you will
probably still need to customize directory names. If you don't use some
file that I mention below, or want to add your own files, make sure you add
these to the makefile or the project file.
The CLIPSDLL.DEF file is the module definition file for the DLL. I think
it is compatible with all compilers. The most important thing to know about
this file is that, in it, one must declare explicitly every CLIPS function
to be called from the external language. This includes every function in the
CLIPS Advanced Programming Guide. I think I have already declared all
documented functions, but you should check yourself just to be sure.
Note that macros are NOT be declared in this file.
The DLLSHELL.C file includes the required DLL entry and exit functions
LibMain and WEP. In my project, these are do-nothing functions. One could
potentially put the InitializeCLIPS() call in LibMain, but I decided to call
it from my C++ program.
The file USERFUNC.C declares and defines the UserFunctions() function. In
my version, I have declared and defined two functions that allow the CLIPS
process to send messages to Windows.
The files DXCLPFNS.H and DXCLPDNS.C declare and define certain functions that
allow me to directly send and receive data to and from the DLL. For example,
the function DefineCLIPSHWindow(HWND aHandle) lets me control a global
HWND variable declared in USERFUNC.C. This variable gives the
message-sending functions in USERFUNC.C the handle of the window I want to
have messages sent to. Note that, since the functions in DXCLPFNS.C will
be called from an external program, I must (and did) declare them in the
CLIPSDLL.DEF file.
After you have modified all necessary files, transfer them into the same
directory as the rest of the CLIPS distribution, and build the DLL using
the makefile or project file. Then test it out with your own program!
NOTES
-----
There are some technical things I need to mention before you
start customizing the files and building the DLL:
* Always #include before . I'm not sure why,
but if I do it the other way around, compiler errors always occur.
* This DLL was built with the Large Memory Model. If you do things
differently, you may run into trouble with near, far, and huge
pointers, and the like.
* After building the DLL, make sure an import library was created
for the DLL. If not, use IMPLIB or some other tool to make one.
Then, make sure you add the import library to your program's
makefile or project file.
* If you get linkage errors when binding the DLL to your main program,
check the .DEF file and insure that you added all functions that
you are calling from the CLIPS DLL.
REGARDS
-------
Well, that's all I can think of right now. If you find something
wrong with the DLL, or if you just can't get things to work, then feel free
to drop me a message at the address I mentioned earlier.
Good Luck...
近期下载者:
相关文件:
收藏者: