C Structures Word Dword and bytes?!
BlitzMax Forums/BlitzMax Programming/C Structures Word Dword and bytes?!
| ||
| Hi. I am trying to make a wrap of a dll for BlitzMax. My problem is that some functions returns C structures that contains DWORD and WORD , and my only clue of how those structures look like is a python wrapper. that looks like this.
class Help(Structure):
_fields_ = [("Data1", DWORD),
("Data2", WORD),
("Data3", WORD),
("Data4", BYTE * 8)]
So I created a Type like this : Type Help Field Data1:Int 'DWORD Field Data2:Short 'WORD Field Data3:Short 'WORD Field Data4:Byte[8] 'BYTE * 8 End Type I readed that DWORD and WORD does not have standard bits. For example on a 32bit system WORD is 32bit and on 64bit system it's 64... I am not sure... I am working on a 64bit system. So when I ran the function
Global dll = LoadLibraryA("dll")
Global Function please:Help(me:int)"win32" = GetProcAddress(dll , "please")
please(1)
I get the message "EXCEPTION ACCESS VIOLETION" Can someone point me to the right direction? Sorry for my English... Thanks. |
| ||
| You cannot return a BlitzMax type from an external function like that. It won't work. BlitzMax types have (at least) an extra 4 bytes as part of their internal structure, and so what you would be returning would be the wrong size anyway. There are ways to do it in BlitzMax though - see the FreeType module for some ideas on mixing Types with C struct data. |
| ||
| Thanks. I will do that. |
| ||
| Arrays in structs are different in C, the elements are part of the structure. Blitzmax instead uses a pointer to the arrays. |
| ||
| Azathoth thanks for the info. (But you are the blind idiot god and I don't know if I must believe you... Just kidding. ) So I must use C to make the wrap. I was hapy cause I thought that I can just import it with the LoadLibraryA and GetProcAdress. I readed some books about C but never learned to use a DLL. There isn't anywhere a simple and short example of how to do it? A short example of how the C file looks like.( with the Include and all ) |