Impossible d'appeler une fonction dans une autre dll...

PeTeRsLaStAr Messages postés 158 Date d'inscription samedi 22 juin 2002 Statut Membre Dernière intervention 27 juin 2015 - 20 déc. 2005 à 14:10
cs_69chris Messages postés 318 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 30 décembre 2005 - 21 déc. 2005 à 08:39
Bonjour.

Je tente d'appeler une fonction d'une autre dll que j'ai faite auparavant (en .net) et cela ne fonctionne pas...



// Init the node to move. If the init Failed, the form is not displayed



try
{
if (ManageUsedNodes(mMyObjects)){// Traitement}
}
catch (Exception e
{

}

// Dans le mm code



private
bool ManageUsedObjects(typeObject[] _MyObjects)


{


MyDllAppelée.MaSousClasse.MaFonction(
ref arg1,
ref arg2,
ref arg3);

...
}

Et le souci, est que l'application ne rentre mm pas dans ma fonction mais va directement dans le catch, et l'exception message est : "?".

c'est du code spécifique à une API (vous le montrer ne servirait donc pas à grand chose)
je peux juste vous dire que la fonction est déclarée de la sorte :

namespace MyDllAppelée


{



/// <summary>



/// Description résumée de CValidationPSE.



/// </summary>



public
class MaSousClasse


{



public MaSousClasse()


{



//



// TODO : ajoutez ici la logique du constructeur



//


}



/// <summary>



/// Check the Valid Point has a PSAWeldPOintSource different from null



///



/// </summary>



/// <returns></returns>



public
static
bool MaFonction(ref arg1,
ref arg2,
ref arg3);

{



//Variables


...

}

Quelqu'un aurait il une idée ???

****************************************************
Il n'y a pas de pb sans solutions : il faut juste trouver le temps pour les chercher

7 réponses

cs_69chris Messages postés 318 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 30 décembre 2005 1
20 déc. 2005 à 16:45
Salut,

Pas plus d'info que ça au niveau de l'exception?
Je commence pars le plus évident.
Tu as bien ajouté la référence à la dll et elle est bien présente dans le répertoire de ton appli?

Chris

N'oubliez pas de cloturer votre post.
0
PeTeRsLaStAr Messages postés 158 Date d'inscription samedi 22 juin 2002 Statut Membre Dernière intervention 27 juin 2015 1
20 déc. 2005 à 16:54
Alors,
pas plus d'info au niveau de l'exception non,
e.Message est "?"
Sachant qu'il n'entre pas du tout dns la fonction quoi...
Alros que si je mets la fonction qui appelle la fonction dans la dll en commentaire, ça marche sans souci...

Sinon : oui, la référence à la dll est bien dans les références, et non la dll n'est pas présente dans le répertoire de mon appli, vu que la copie locale est à false.
J'ai tenté le mm bout de code en mettant copie locale à true et en insérant la dll dans le répertoire, mais avec le mm résultat...

D'autres questions ? D'autres idées surtout ? ^^

****************************************************
Il n'y a pas de pb sans solutions : il faut juste trouver le temps pour les chercher
0
cs_69chris Messages postés 318 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 30 décembre 2005 1
20 déc. 2005 à 17:10
Oui, une autre question. C'est quoi le Type de l'exception. Car le message c'est bien beau mais le type, la classe qui la génère, la méthode et ainsi de suite ça aide à localiser l'origine.
Donc si tu pouvais donner toutes les infos...

Ton truc, ça resemble à "je trouve pas la Dll". Donc effectivement, il passe pas sur l'appel de la méthode.

Chris

N'oubliez pas de cloturer votre post.
0
PeTeRsLaStAr Messages postés 158 Date d'inscription samedi 22 juin 2002 Statut Membre Dernière intervention 27 juin 2015 1
20 déc. 2005 à 17:23
- e {"?" } System.Exception
+ [System.TypeLoadException] {"MyDllAppelée.MaSousClasse.MaFonction"} System.TypeLoadException
System.Object {System.TypeLoadException} System.Object
_className null string
_COMPlusExceptionCode -532459699 int
_exceptionMethod <valeur non définie> System.Reflection.MethodBase
_exceptionMethodString null string
_helpURL null string
_HResult -2146233054 int
_innerException { } System.Exception
_message "?" string
_remoteStackIndex 0 int
_remoteStackTraceString null string
_source null string
+ _stackTrace {System.Array} System.Object
_stackTraceString null string
_xcode -532459699 int
_xptrs 0 int
HelpLink null string
HResult -2146233054 int
InnerException { } System.Exception
Message "?" string

Peut être que la dll en soit n'est pas correcte ?
Car si elle n'était pas au bon endroit, est ce que j'aurais accès à toutes ses fonctions dans le code, en tapant le point juste derrière l'appel en question ? (ça a un terme, je m'en souviens plus...) est ce que ça bloquerait pas à la compile plutot ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_69chris Messages postés 318 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 30 décembre 2005 1
20 déc. 2005 à 17:37
Donc, le type d'erreur confirme mon idée première.
TypeLoadException est levé lors d'une erreur au chargement d'un type donc d'un assembly s'il n'était pas chargé.
La propriété StackTrace donne le détail de la pile d'appel. Donc tu peux y trouver qui est à l'origine de l'exception. Dans ton cas, je pense toujours qu'il manque une DLL ou une autre dépendance dans le répertoire de ton appli.
Si tu es "propriétaire" du code de la méthode que tu appel (MaMethode), ajoute un try catch et compile la mode debug. Normalement, ça doit rien changer à ton problème.
Ensuite, quelle est la spécifitée de cette méthode en terme de ressource (DLL, objet COM, etc...).
Un projet de test de cette DLL fonctionne?

Chris

N'oubliez pas de cloturer votre post.
0
PeTeRsLaStAr Messages postés 158 Date d'inscription samedi 22 juin 2002 Statut Membre Dernière intervention 27 juin 2015 1
20 déc. 2005 à 20:00
C'est une DLL que j'ai faites moi mm, qui était à la base utilisée pour gérer les erreurs sous forme de log.
Je n'ai pas encore testé cette fonctionnalité....

Cependant, elle contenait auparavant toute une série de constantes (un peu comme une bibliothèques de constantes finalement), et ces constantes, lorsqu'elles étaient appelées, étaient parfaitement reconnues.

Est ce le fait qu'il s'agisse d'une fonction ?
Est il possible d'avancer en mode pas à pas dans la dll appelée en question, voir ce qui se passe ?
Genre en liant les processus ou autre ?

Merci de me consacrer un peu de temps en tout cas, c'est très sympa de ta part...
****************************************************
Il n'y a pas de pb sans solutions : il faut juste trouver le temps pour les chercher
0
cs_69chris Messages postés 318 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 30 décembre 2005 1
21 déc. 2005 à 08:39
Et bien si tu es sous VS.NET pas de Pb, je te conseil même de faire 1 solution avec les 2 projets. Ensuite en debug tu peux tout suivre en pas à pas.

Chris

N'oubliez pas de cloturer votre post.
0
Rejoignez-nous