Après windows pour les nuls, voici PB pour les bons (ou presque).

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 29-11-2011 13:08:21

hugonoof  
Membre
Date d'inscription: 03-06-2011
Messages: 6
Pépites: 36
Banque: 0

error calling external function

Bonjour, je suis sous PB12, mon appli fait appel a une DLL (pbl_tp.dll):

Code: pb

FUNCTION int TP_Get_Format (ulong ul_connectid, int i_in_out, ref string s_format_type, ref long l_buffer_length, ref string s_Format_Parameter, ref ulong ul_buffer) 
library "pbl_tp.dll" alias for "TP_Get_Format;Ansi"


1er cas: Lorsque je compile et exécute le .exe depuis windows, pas de problème, tout marche.
2eme cas: Lorsque j'exécute depuis PB12, je plante a l'appel de la fonction "TP_Get_Format" (error calling external function ...)

Quelques pistes que j'ai deja verifié:
-Dans les deux cas je suis sur que appels la même DLL.
-J'utilise dans le code d'autres fonctions issu de "pbl_tp.dll" et elles marchent bien dans les deux cas, c'est seulement l'appel a TP_Get_Format qui plante lorsque j'exécute depuis PB12, j'en déduis que la recherche de la DLL ne pose pas de problème lorsque j'exécute depuis PB12.

Ca serait donc bien cette fonction qui plante mais pourquoi dans un cas et pas dans l'autre.

Merci d'avance pour votre aide, si vous avez une piste.

Hors ligne

 

#2 15-04-2012 10:50:26

Letaafeux  
Membre
Date d'inscription: 11-04-2012
Messages: 4
Pépites: 19
Banque: 0

Re: error calling external function

Bonjour,

Je rencontre exactement le même cas que toi avec la même DLL. Dans mon cas c'est la fonction TP_init qui pose problème.
Je suis en PB12 connecté à une base Oracle via CICS. Ca marchait très bien en PB11.

A noter que la première fois qu'on lance l'appli en interprété ça marche mais les fois suivantes ça plante. Il faut fermer PB et le réouvrir pour pouvoir de nouveau lancer une fois l'appli en interprété.
Du coup, c'est pas bien pratique pour tester....!

Comme pour toi, l'exe compilé fonctionne bien.

As tu trouvé une solution pour ne pas avoir ce problème ?


Merci

Hors ligne

 

#3 15-04-2012 17:35:32

xlat  
0xc0000005
Award: bf
Lieu: Tanger (طنج)
Date d'inscription: 04-12-2010
Messages: 720
Pépites: 11,343
Banque: 100,221,387,868,884,300
Site web

Re: error calling external function

Ça me fait penser a un problème que j'ai rencontré avec des dll qui ne se déchargeaient pas entre deux lancement de l'application depuis l'IDE. On peut le vérifier avec des tools comme process hacker, sur les propriétés du process de l'IDE il y a un onglet Modules qui permet de voir les dll chargées et aussi de forcer le déchargement. Grace a ça j'économise les fermetures de l'IDE, mais ça cache plutôt un bug de ref count sur la lib (il manque un freelibrary sous le capot?).


https://lut.im/eJINqa9o/vAtyxD0h "Don't believe everything you read on the Internet"
    -- Abraham Lincoln

www.ngs.ma

Hors ligne

 

#4 16-04-2012 08:09:33

seki  
0x73656B69
Award: bf
Lieu: Laquenexy & Luxembourg
Date d'inscription: 20-11-2008
Messages: 1118
Pépites: 4,296,080,204
Banque: 9,223,372,036,854,776,000
Site web

Re: error calling external function

xlat a écrit:

On peut le vérifier avec des tools comme process hacker, sur les propriétés du process de l'IDE il y a un onglet Modules qui permet de voir les dll chargées et aussi de forcer le déchargement.

Pour ceux que ça peut intéresser, Process Hacker est dans mon quinté gagnant des outils de dev, avec Total Commander (le seul qui ne soit purement un outil de dev), Dependency Walker pour tenter de s'y retrouver dans les chargements de dll et étudier le comportement de certains programmes, l'éditeur hexa HxD et StudPE. Je pourrais aussi citer la version free d'IDA, mais ça fait plus de 5


The best programs are the ones written when the programmer is supposed to be working on something else. - Melinda Varian

Mes réponses PB sur StackOverflow
http://stackoverflow.com/users/flair/317266.png

Hors ligne

 

#5 16-04-2012 09:28:56

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

Re: error calling external function

Zut! Je n'ai pas accès à la page de StudPE: ma suite security la bloque pour cause de malwares


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#6 16-04-2012 11:48:02

seki  
0x73656B69
Award: bf
Lieu: Laquenexy & Luxembourg
Date d'inscription: 20-11-2008
Messages: 1118
Pépites: 4,296,080,204
Banque: 9,223,372,036,854,776,000
Site web

Re: error calling external function

foon a écrit:

Zut! Je n'ai pas accès à la page de StudPE: ma suite security la bloque pour cause de malwares

Les antivirus n'y connaissent rien
StudPE n'est pas un malware, c'est un outil qui permet d'analyser (= study) les éxécutables windows au format PE :
- affichage des caractéristiques définies par l'entête (et modification possible)
- affichage des sections du fichier (code, data, ressources, overlays)
- affichage de la liste des fonctions importées et exportées (comme pour Dependency walker)
- tentative d'identification du compilateur qui a produit l'exe, ou du packer si c'est compressé (ex: upx) / enfumé (obfuscated)

Je me rappelle que j'ai déjà eu des faux positifs avec un antivirus : l'un des plugins d'identification qui l'accompagnent est vu comme un programme louche...


The best programs are the ones written when the programmer is supposed to be working on something else. - Melinda Varian

Mes réponses PB sur StackOverflow
http://stackoverflow.com/users/flair/317266.png

Hors ligne

 

#7 19-04-2012 20:38:03

Letaafeux  
Membre
Date d'inscription: 11-04-2012
Messages: 4
Pépites: 19
Banque: 0

Re: error calling external function

Merci à tous pour les tuyaux !

Je vais essayer d'installer Process Hacker sur le pc du boulot (un peu en clandé, je ne suis pas sûr que ce soit vraiment autorisé )
Malheureusement ça reste une solution de contournement.
Si quelqu'un a une idée pour forcer l'appli à lacher ses dll je suis preneur...

Alors que j'essayais différentes bidouilles sans succès, il y a quand même eu un moment où ça a marché sans que je ne change rien... J'ai alors fermé et réouvert PB et là de nouveau le bug

Je reviens dès que j'ai le diagnostic de process hacker.

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22