salut
Merci pour les infos. J'ai testé, mais ça ne marche pas toujours comme il faudrait.
J'ai testé plusieurs fonctions :
Code : Tout sélectionner
; This procedure is called once, when the program loads the library
; for the first time. All init stuffs can be done here (but not DirectX init)
ProcedureDLL AttachProcess(Instance)
; juste pour voir si ça marche
If OpenWindow(0,50,50,500,200,"Window test",#PB_Window_SystemMenu)
CreateMenu(0,WindowID(0))
MenuTitle("Files")
EndIf
EndProcedure
; Called when the program release (free) the DLL
ProcedureDLL DetachProcess(Instance)
CloseWindow(0)
EndProcedure
; Both are called when a thread in a program call or release (free) the DLL
ProcedureDLL AttachThread(Instance)
EndProcedure
ProcedureDLL DetachThread(Instance)
EndProcedure
; Real code start here..
ProcedureDLL EasyRequester(Title.s,Message.s)
MessageRequester(Title, Message)
EndProcedure
ProcedureDLL SampleFunction(a.d, b.d)
ProcedureReturn a*b
EndProcedure
La fenêtre avec menu s'ouvre correctement.
Par contre, la fonction easyRequester m'affiche un texte en chinois au lieu du texte en français que je mets dans GameMAker ^^.
Et la fonction SampleFunction ne me renvoie rien dans GM.
Dans GM, je crée ce script que je lance (pour initialiser la dll) :
Code : Tout sélectionner
//InitDLL script:
global.foo = external_define("puredll.dll", "SampleFunction", dll_cdecl, ty_real, 2, ty_real, ty_real);
global.EasyReq = external_define("puredll.dll", "EasyRequester", dll_cdecl, ty_real, 2, ty_string, ty_string);
Puis, je crée ce script pour interroger une des fonctions (SampleFunction())
Code : Tout sélectionner
show_message("Start result")
result = external_call(global.foo, argument0, argument1)
show_message(string(result))
return result
Mais le 2ème show_message() (une sorte de message_requester()) ne se lance pas, on dirait que ça s'arrête juste après External_call(), mais qu'il n'y a rien en retour.
Bref, ça marchouille si on ne veut rien recevoir en retour, mais si on attend de recevoir une valeur, ça ne marche pas.
Dommage ^^.