Codesnippets > Inline / 3rd party
DLL help
Maxheadroom:
Ok I omit defeat with the inline command the problem is I just can’t work how it works, I even have the full description file from the supplier. If I send you the dll and the document, can you show me how to get one or two of the commands working, I am sure if you show me one or two I could work out the rest out!
Thanks, Max…
EDIT:
Problem is solved, COM port communication is working. See best answer here:
http://www.glbasic.com/forum/viewtopic.php?pid=2499#p2499
Hemlos:
Ok you asked for it, heres an example :)
http://www.glbasic.com/forum/viewtopic.php?id=545
Maxheadroom:
Ok that’s great!
Can we start with the simple stuff, I have loads more questions.
1, a Dll file will give GLBAISC extra commands? True/false
2, can I use the commands as if they were part of the glbasic
3, how do variables connect with glabsic variables?
thanks, Max
Kitty Hello:
I got your mail. Oh boy. That's a lot of work. I tell you the basics, but I can't do it all for you.
If you read Visual Basic:
--- Code: (glbasic) ---Private Declare Function XY Lib "xyz.dll" (a As Long) As Double
--- End code ---
You write:
--- Code: (glbasic) ---INLINE
extern "C" double (__stdcall* XY)(long a)=0;
DLLCALL("xyz.dll", "XY", (void**) &XY);
ENDINLINE
--- End code ---
Now the details:
INLINE - that starts inline C++ programming
Then comes the function declaration - tell the compiler, there is a function called XY that takes a 'long' argument and returns a double.
extern "C" - the call is an extern "C" declaration - for VB callable DLLs it's always this:
extern "C" return_value(__stdcall* FunctionName) (arguments);
--- Code: (glbasic) ---double - that's the return value. Use these:
int - 32 bit integer - the same as 'long'
short - 16 bit integer (that's Integer in VB)
char - 8 bit integer
double - 64 bit floating point
float - 32 bit floating point
char* - a String
void* - any pointer - you can use 'int' as well...
--- End code ---
(__stdcall* - the calling convention. VB can only handle stdcall (double underscore at the beginning)
XY ) - The function name. That's the name you give the function internally (when you call it) It can differ from the real name.
(long a) - here comes the parameter list, separated by commas. You can leave the variable names 'a' if you want to. Only the types are of interest.
=0 - you say the function pointer equals '0'. This way can test if the function got loaded later.
DLLCALL( dll_name, function_name_witin_the_dll, (void**) &function_name_of_declaration);
If you want to call the function, you write:
--- Code: (glbasic) ---LOCAL retval, inval
INLINE
retval = XY(inval);
ENDINLINE
--- End code ---
Read the reference for INLINE as well. It tells you how to connect/convert GLBasic data into C++ data.
Maxheadroom:
your the man!, i will try it tonight very slowly. (Sure to have more questions later)
thank you very much for the pointers.
Navigation
[0] Message Index
[#] Next page
Go to full version