On peut également utiliser IMPORTLIST
IMPORTLIST
Request a listing of all imported functions known by the compiler.
Parameters: none
Response : The first line contains the number of imported functions, then all the imported function name with there arguments,
each on its own line.
The output is terminated by a line containing 'OUTPUT<T>COMPLETE'.
J'utilise ce type de code (code de danilo sur le forum anglais) depuis plusieurs mois, il fonctionne aussi avec l'option unicode.
Il y a quelques explications (en anglais) dans le fichier CompilerInterface.txt du dossier \SDK de PB, en particulier pour obtenir le détail des structures etc.
La liste des imports ne comporte pas uniquement des API window (pour ceux qui utilisent Linux et autre je ne sais pas) mais aussi des commandes de scintilla par exemple si je me souviens bien.
Le code complet de Danilo est ici
http://www.purebasic.fr/english/viewtop ... 12&t=53701
Pour pouvoir utiliser le code en unicode (pas la compilation mais le retour du compilateur), j'utilise ceci
Code : Tout sélectionner
Procedure StartCompiler_x64_Unicode()
ProcedureReturn RunProgram(GLB_Compiler_x64_Unicode$, "/STANDBY /UNICODE", "",#PB_Program_Open|#PB_Program_Read|#PB_Program_Write|#PB_Program_Hide)
EndProcedure
et ceci en Ascii
Code : Tout sélectionner
Procedure StartCompiler_x64_Ascii()
ProcedureReturn RunProgram(GLB_Compiler_x64$, "/STANDBY", "",#PB_Program_Open|#PB_Program_Read|#PB_Program_Write|#PB_Program_Hide)
EndProcedure
j'ai donc ajouté /UNICODE aux options après /STANDBY
Je le répète, les 2 modes de compilation fonctionnent dans mon projet sans que j'ai pu détecter de problème.
J'ai fait beaucoup de tests.
Il y a des constantes qui existent en 64 bits et pas en 32 bit et réciproquement.
De mémoire, ce sont celles de la librairie OnError, par exemple celles liées aux registres du processeur
est définie en 64 bit mais pas en 32 et
existe en 32 et pas en 64 bit bien que Eax soit une partie de Rax.
De la même manière, des constantes unicode ont des valeurs différentes en ascii
Je me suis écrit mon propre outil pour afficher tout ça d'un coup, le visualisateur de structures/constantes de PB ne fonctionne pas toujours correctement même en redémarrant le compilateur, par exemple sur un nouveau fichier j'ai redémarré le compilateur en 32 bit car j'étais en 64 et impossible de voir la constante PB_OnError_Eax. J'ai fermé PB et redémarré en 32 bits et c'est OK.

Affichage de toutes les structures dans tous les modes

Affichage de toutes les constantes dans tous les modes