Page 1 of 1
Defined( ) : new constant #PB_ASM_Symbol
Posted: Wed Nov 19, 2008 1:07 am
by eddy
Here is a little example of my problem :
Code: Select all
;//// From included file 1
!EXTRN _PB_Gadget_RegisterGadget@16
;//// From included file 2
!EXTRN _PB_Gadget_RegisterGadget@16
;---> error message : symbol already defined
Is it possible to add a new constant for this case ?
#PB_ASM_Symbol
Code: Select all
CompilerIf Defined(_PB_Gadget_RegisterGadget, #PB_ASM_Symbol)=#False
!EXTRN _PB_Gadget_RegisterGadget@16
CompilerEndIf
Posted: Wed Nov 19, 2008 2:02 am
by ts-soft
Why not import "PB_Gadget_RegisterGadget" ?
Posted: Wed Nov 19, 2008 2:10 am
by eddy
Why not import "PB_Gadget_RegisterGadget"
It works only for external functions (like _PB_Gadget_RegisterGadget).
But how to import _PB_Gadget_Objects ?
It seems to be a global variable.
Do you know the ASM code to check if symbol exists ?
Posted: Wed Nov 19, 2008 2:19 am
by freak
The compiler cannot know what will be going on at the assembly stage.
You have to use FASM conditional directives for this.
Posted: Wed Nov 19, 2008 2:28 am
by ts-soft
Code: Select all
Import "Gadget.lib"
CompilerIf #PB_Compiler_Unicode
PB_Gadget_RegisterGadget(a,b,c,d) As "_PB_Gadget_RegisterGadget_UNICODE@16"
CompilerElse
PB_Gadget_RegisterGadget(a,b,c,d) As "_PB_Gadget_RegisterGadget@16"
CompilerEndIf
EndImport
Import "Gadget.lib"
PB_Gadget_Objects
EndImport
Debug PB_Gadget_Objects
If OpenWindow(0, 0, 0, 322, 150, "EditorGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
EditorGadget(0, 8, 8, 306, 133)
TextGadget(1,0,0,0,0,"")
For a = 0 To 5
AddGadgetItem(0, a, "Line "+Str(a))
Next
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Posted: Wed Nov 19, 2008 2:53 am
by eddy
great! It works thx.
And if someone needs to know the FASM directives :
Code: Select all
!IF ~ DEFINED _PB_Gadget_RegisterGadget
!EXTRN _PB_Gadget_RegisterGadget@16
!END IF