i am working on a 3D library for purebasic and have some problems with Tailbite. At first i think i found a bug. You can start the program, but Tailbite brings a error message for the "ProcedureDLL MyDiv" but the error case are both "import" lines (also for the remark line). Tailbite don´t like the : charakter.
not working
Code: Select all
Import "dxguid.lib" : EndImport
; Import "dxguid.lib" : EndImport
ProcedureDLL MyDiv(a, b)
ProcedureReturn a/b
EndProcedure
Code: Select all
Import "dxguid.lib"
EndImport
; Import "dxguid.lib"
; EndImport
ProcedureDLL MyDiv(a, b)
ProcedureReturn a/b
EndProcedure
Example
Code: Select all
;////////////////////////////////////////////////////////////////
;//
;// Project Title: ImportStructur Variable funktioniert nicht in Tailbite V1.3 PR 1.877
;// File Title: ImpStruct.pb
;// Geschrieben am: 11.10.2008
;// Update am:
;// Author: Michael Paulwitz
;// für 3D Engine Michael Paulwitz
;//
;//
;// Problem mit Tailbite
;//
;// Als ausgeführte Datei wird IID_IDirectInput8A und c_dfDIMouse an die Procedure übergeben, als Tailbite lib
;// wird nur die Struktur ohne Wert übergeben
;//
;////////////////////////////////////////////////////////////////
Structure DIDATAFORMAT
dwSize.l
dwObjSize.l
dwFlags.l
dwDataSize.l
dwNumObjs.l
*rgodf.DIOBJECTDATAFORMAT
EndStructure
Macro DEFINE_GUID(Name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
; Macro DEFINE_GUID(Name, l.l, w1.w, w2.w, b1.b, b2.b, b3.b, b4.b, b5.b, b6.b, b7.b, b8.b)
Global Name.GUID
Name\Data1 = l
Name\Data2 = w1
Name\Data3 = w2
Name\Data4[0] = b1
Name\Data4[1] = b2
Name\Data4[2] = b3
Name\Data4[3] = b4
Name\Data4[4] = b5
Name\Data4[5] = b6
Name\Data4[6] = b7
Name\Data4[7] = b8
EndMacro
Macro ImportVariable(VarName, VarType)
Global VarName.VARTYPE
EnableASM
_TempPointer.l
!EXTRN _#VarName
!MOV Eax, _#VarName
MOV _TempPointer, Eax
DisableASM
CopyMemory(_TempPointer, VarName, SizeOf(VarName))
EndMacro
Import "dxguid.lib"
EndImport
Import "dinput8.lib"
EndImport
ImportVariable(IID_IDirectInput8A, guid)
ImportVariable(c_dfDIMouse, DIDATAFORMAT)
a$ = Hex(c_dfDIMouse\dwSize) + Chr(10) + Hex(c_dfDIMouse\dwObjSize) + Chr(10) + Hex(c_dfDIMouse\dwFlags)
a$ = a$ + Chr(10) + Hex(c_dfDIMouse\dwDataSize) + Chr(10) + Hex(c_dfDIMouse\dwNumObjs) + Chr(10)
MessageRequester("c_dfDIMouse", a$, #PB_MessageRequester_Ok)
ProcedureDLL MeinMist()
a$ = Hex(IID_IDirectInput8A\Data1) + Chr(10) + Hex(IID_IDirectInput8A\Data2) + Chr(10) + Hex(IID_IDirectInput8A\Data3) + Chr(10) + Hex(IID_IDirectInput8A\Data4[0]) + Chr(10)
a$ = a$ + Hex(IID_IDirectInput8A\Data4[1]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[2]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[3]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[4])
a$ = a$ + Chr(10) + Hex(IID_IDirectInput8A\Data4[5]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[6]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[7]) + Chr(10)
MessageRequester("IID_IDirectInput8A", a$, #PB_MessageRequester_Ok)
DEFINE_GUID(IID_IDirectInput8A, $BF798030,$483A,$4DA2,$AA,$99,$5D,$64,$ED,$36,$97,$00)
a$ = Hex(IID_IDirectInput8A\Data1) + Chr(10) + Hex(IID_IDirectInput8A\Data2) + Chr(10) + Hex(IID_IDirectInput8A\Data3) + Chr(10) + Hex(IID_IDirectInput8A\Data4[0]) + Chr(10)
a$ = a$ + Hex(IID_IDirectInput8A\Data4[1]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[2]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[3]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[4])
a$ = a$ + Chr(10) + Hex(IID_IDirectInput8A\Data4[5]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[6]) + Chr(10) + Hex(IID_IDirectInput8A\Data4[7]) + Chr(10)
MessageRequester("IID_IDirectInput8A", a$, #PB_MessageRequester_Ok)
a$ = Hex(c_dfDIMouse\dwSize) + Chr(10) + Hex(c_dfDIMouse\dwObjSize) + Chr(10) + Hex(c_dfDIMouse\dwFlags)
a$ = a$ + Chr(10) + Hex(c_dfDIMouse\dwDataSize) + Chr(10) + Hex(c_dfDIMouse\dwNumObjs) + Chr(10)
MessageRequester("c_dfDIMouse", a$, #PB_MessageRequester_Ok)
EndProcedure
MeinMist()
Thanks for your help
Michael