FLI, passing strings to c functions
Hi,
I'm building a lisp interface to the HGE
(http://hge.relishgames.com).
I get a strange behaviour when trying to set the window title.
the C++ side
------------
HGESTUB_API void __cdecl
C_System_SetState_CharPtr(int state, char* value){
hge->System_SetState(hgeState(state),value);
}
lisp side
---------
(fli:define-foreign-function
(hge-system-setstate-charptr "C_System_SetState_CharPtr" :source)
((state :int)(value (:reference-pass :ef-mb-string)))
:calling-convention :cdecl)
the call:
(hge-system-setstate-charptr HGE_TITLE "Some Title")
When i follow the call with the VC++ debugger the correct string is
passed to the function, however when the window pops up there's a
completely different string "C_System_Initiate" in the caption.
"C_System_Initiate" is the name of an exported function in the dll.
Any idea how to solve this, it looks like the char pointer passed
to the C++ function has to be a pointer to static memory, but is
there a way in lispworks to make a string "static"?
--
Best regards,
Steven
www.interstudio.nl