Phantom supports limited use of
user defined Dynamic Link Libraries (DLLs). Functions written
in C can be imported into the Phantom code by using the 'dll' statement.
Not all DLL functions can be called or loaded. However, this feature
provides an interface to complex user defined functions.
The syntax of a 'dll' statement is:
dll FuncName(string Dll_File, string
Dll_Function, false, Return_Type, Parameter1,
Parameter2, ....);
where,
FuncName -
is the name of the function called in Phantom. It can be the same
name as the DLL function name.
string Dll_File - is the path and file name
of the DLL. This supports relative file names.
string Dll_Function - The name of the function
exported from the DLL.
false - always
false. Included for future expandability.
Return_Type - The
return type of the DLL function. Can be 'bool', 'string', 'int',
or 'void' (not 'rea'l). \
Parameter1 - The type (and optionally
name) of the first parameter of the DLL function. There can be
up to 16 parameters. The parameter types can be a 'string' ,'bool',
or 'int' (not 'real').
The DLL functions (written in C) can accept and return
a char*, bool, or int. The following example code is a C file
compiled and built into a DLL using the Microsoft Visual C++ developer
studio.
Example
Code |
//
SampleDll.cpp
// The 'extern "C" ' statement
is required.
extern "C" {
__declspec(dllexport) int DllAdd(int i1, int i2);
__declspec(dllexport) int DllSub(int Num1, int Num2, int Num3);
}
__declspec(dllexport) int DllAdd(int
Num1, int Num2)
{
return Num1+Num2;
}
__declspec(dllexport) int DllSub(int
Num1, int Num2, int Num3)
{
return (Num1 - Num2 - Num3);
}
|
A DLL called 'SampleDll.dll' is created from this
code with two functions, the DllAdd and the DllSub functions.
DllAdd returns an integer and accepts two integers. DllSub returns
an integer and accepts three integers.
These functions are called and loaded via the following
Phantom script, assuming the DLL and the script are on the same directory
Example
Code |
#
Sample Script that uses DLLs
string
Dir = "SampleDll.dll"; # The DLL file
int iRet;
# Load the DLL
functions
dll DllFunc(Dir,
"DllAdd", false, int, int i1, int i2);
dll DllSub1(Dir,
"DllSub", false, int, int i1, int i2, int i3);
# Call the Functions
iRet = DllFunc(1,
4);
PrintMessage(iRet);
iRet = DllSub1(iRet,
2, 4);
PrintMessage(iRet);
|
It is a good idea to review this sample and the use of DLLs before attempting
to use this feature.
See Also:
User Defined Functions
|