Qu'est-ce que j'ai oublié de faire ? Quelqu'un a une idée ?---------------------------
PureBasic - Linker error
---------------------------
POLINK: error: Unresolved external symbol '_PB_Object_GetObject'.
POLINK: error: Unresolved external symbol '_PB_Object_FreeID'.
POLINK: error: Unresolved external symbol '_PB_Object_CleanAll'.
POLINK: error: Unresolved external symbol '_PB_Object_Init'.
POLINK: error: Unresolved external symbol '_PB_Object_GetOrAllocateID'.
POLINK: fatal error: 5 unresolved external(s).
POLINK: error: Unresolved external symbol '_PB_Object_xxx
POLINK: error: Unresolved external symbol '_PB_Object_xxx
J'ai essayé de compiler l'exemple ObjectManagement du SDK, il fonctionne bien en mode debug, par contre sans le debug j'ai ces erreurs !
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Re: POLINK: error: Unresolved external symbol '_PB_Object_xx
un lien pas résolu , tu as compilé avec quoi ?
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: POLINK: error: Unresolved external symbol '_PB_Object_xx
Je ne dois pas avoir les yeux en face des trous. Je n'ai pas trouvé l'exemple ObjectManagement du SDK.
■ Voila un source qui permet de créer un objet et de l'initialiser avec un string. Une seconde fonction permet d'extraire le string de cet objet.
- CreateObject(Object, String.s) Création de l'objet.
- GetObjectString(Object) Retourne le string de l'objet.
Ce code génère effectivement des erreurs POLINK si je l’exécute sans le débogueur.Par contre il fonctionne parfaitement avec le débogueur.
■ J'ai vu sur le forum que ce problème pouvait être contourner de cette manière.C'est étrange mais ça fonctionne. Peut être que Fred pourra en dire un peu plus.
J'ai donc modifié la procédure FreeObject(Object.l) de cette manière.Avec ou sans débogueur, le code fonctionne.
■ Voila un source qui permet de créer un objet et de l'initialiser avec un string. Une seconde fonction permet d'extraire le string de cet objet.
- CreateObject(Object, String.s) Création de l'objet.
- GetObjectString(Object) Retourne le string de l'objet.
Ce code génère effectivement des erreurs POLINK si je l’exécute sans le débogueur.
Code : Tout sélectionner
Import ""
Object_GetOrAllocateID (Objects, Object.l) As "_PB_Object_GetOrAllocateID@8"
Object_GetObject (Objects, Object.l) As "_PB_Object_GetObject@8"
Object_IsObject (Objects, Object.l) As "_PB_Object_IsObject@8"
Object_EnumerateAll (Objects, ObjectEnumerateAllCallback, *VoidData) As "_PB_Object_EnumerateAll@12"
Object_EnumerateStart (Objects) As "_PB_Object_EnumerateStart@4"
Object_EnumerateNext (Objects, *object.Long) As "_PB_Object_EnumerateNext@8"
Object_EnumerateAbort (Objects) As "_PB_Object_EnumerateAbort@4"
Object_FreeID (Objects, Object.l) As "_PB_Object_FreeID@8"
Object_Init (StructureSize.l, IncrementStep.l, ObjectFreeFunction) As "_PB_Object_Init@12"
Object_GetThreadMemory (MemoryID.l) As "_PB_Object_GetThreadMemory@4"
Object_InitThreadMemory(Size.l, InitFunction, EndFunction) As "_PB_Object_InitThreadMemory@12"
EndImport
Structure sObject
Object.l
string.s
EndStructure
Procedure FreeObject(Object.l)
Shared gObject.l
If Object<>#PB_Any And Object_IsObject(gObject, Object)
Protected *object.sObject = Object_GetObject(gObject, Object)
If *object
Debug "PB_Object " + Str(Object) + " détruit"
Object_FreeID(gObject, Object)
ProcedureReturn #True
EndIf
EndIf
EndProcedure
Procedure CreateObject(Object, String.s)
Shared gObject.l
Protected *object.sObject
If Object And string
If Not gObject
gObject = Object_Init(SizeOf(sObject), 1, @FreeObject())
EndIf
*object = Object_GetOrAllocateID(gObject, Object)
If *object
*object\Object = Object
*object\string = string
ProcedureReturn *object
EndIf
EndIf
EndProcedure
Procedure.s GetObjectString(Object)
Shared gObject.l
Protected *object.sObject = Object_GetObject(gObject, Object)
If *object
ProcedureReturn *object\string
EndIf
EndProcedure
CreateObject(1, "Premier test")
Debug GetObjectString(1)
Result = CreateObject(#PB_Any, "Deuxiéme test")
Debug GetObjectString(Result)
;Destruction des objets
FreeObject(1)
FreeObject(Result)
■ J'ai vu sur le forum que ce problème pouvait être contourner de cette manière.
Code : Tout sélectionner
If IsWindow(#PB_Any)
EndIf
J'ai donc modifié la procédure FreeObject(Object.l) de cette manière.
Code : Tout sélectionner
Procedure FreeObject(Object.l)
Shared gObject.l
If Object<>#PB_Any And Object_IsObject(gObject, Object)
Protected *object.sObject = Object_GetObject(gObject, Object)
If *object
Debug "PB_Object " + Str(Object) + " destroyed"
Object_FreeID(gObject, Object)
ProcedureReturn #True
EndIf
EndIf
;Solution de contournement
If IsWindow(#PB_Any)
EndIf
EndProcedure
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: POLINK: error: Unresolved external symbol '_PB_Object_xx
Visual Studio 2013G-Rom a écrit :un lien pas résolu , tu as compilé avec quoi ?
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Re: POLINK: error: Unresolved external symbol '_PB_Object_xx
il se trouve à cette adresse : \SDK\VisualC\ObjectManagementJe ne dois pas avoir les yeux en face des trous. Je n'ai pas trouvé l'exemple ObjectManagement du SDK.
En effet c'est étrange, mais ça fonctionne, merci pour ta réponse complète et détaillée.falsam a écrit : ■ J'ai vu sur le forum que ce problème pouvait être contourner de cette manière.C'est étrange mais ça fonctionne. Peut être que Fred pourra en dire un peu plus.Code : Tout sélectionner
If IsWindow(#PB_Any) EndIf
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Re: POLINK: error: Unresolved external symbol '_PB_Object_xx
Au niveau de visual basic, tu as certainement le lien qui n'est pas fait avec la version release. regarde les differences entre release et debug. tu devrais trouver facilement. le fait de rajouter le morceau de code de falsam fait office de lien.
Re: POLINK: error: Unresolved external symbol '_PB_Object_xx
Dans le .desc, il faut rajouter une dependence vers la lib "Object":
edit: j'ai corrigé le probleme pour la prochaine beta
Code : Tout sélectionner
; Langage used to code the library: ASM or C
C
; Number of windows DLL than the library need
0
; Library type (Can be OBJ or LIB)
LIB
; Number of PureBasic library needed by the library
1
Object
Re: POLINK: error: Unresolved external symbol '_PB_Object_xx
Super ça marche, merci.
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.