Meilleur auteur de réponses
Soucis passage de pointeur vers une DLL C++

Question
-
Bonjour,
J'ai un problème avec le passage de pointeur vers une DLL, compilée avec C++ Builder.
Je dois appeller la fonction suivante :
Declare Function Dll_Umc_Ouvrir_Symboles Lib "Dll_Umc.dll" (ByRef Nom_Fichier As String) As Boolean
La fonction dans la DLL a été codée comme ceci :
__declspec ( dllimport ) bool Dll_Umc_Ouvrir_Symboles( char *Nom_Fichier )
Enfin, quand je passe le nom de fichier en paramètre, Je me retrouve avec une erreur : Un composant externe a levé une exception...Voila mon code en VB :
Private Sub OuvrirUnFichierDeSymboleToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OuvrirUnFichierDeSymboleToolStripMenuItem.Click Dim Fichier As String If OpenFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then Try Fichier = IO.Path.GetFileName(OpenFileDialog1.FileName()) If (Fichier <> "") Then TextBox3.Text = Fonctions.Dll_Umc_Ouvrir_Symboles(Fichier) End If Catch Ex As Exception MessageBox.Show("Cannot read file from disk. Original error: " & Ex.Message) Finally End Try End If End Sub
Merci- Type modifié Ciprian Duduiala mercredi 11 janvier 2012 11:38
Réponses
-
Apres avoir regardé la source de la DLL, j'en conclu que le nom du fichier et son extension suffisent, du moment qu'il est avec l'exe. Mais j'ai testé une autre fonction, plus simple, sans pointeur, juste un Integer, il me fait la même erreur, ca doit donc venir de ma DLL qui est mauvaise. Je vous tiens au courant une fois que je suis fixé.
Merci.
Edit : J'ai trouvé la cause de mon problème, la DLL n'est pas totalement en cause, en fait, toutes les fonctions codées dans ma DLL reposent sur une seule, si celle la n'accorde pas l'accès toute la DLL est bloquée.Sauf que cette dite fonction a mal été codée et ne reconnais pas les bonnes chaines qu'on lui envoi. Je vais donc pouvoir continuer maintenant.
Encore merci à vous.
- Modifié TonioX vendredi 6 janvier 2012 13:13
- Marqué comme réponse Ciprian Duduiala mercredi 11 janvier 2012 11:39
Toutes les réponses
-
-
Etant plutôt habitué à travailler en C et débutant en VB, je testes plusieurs possibilité, mais que je passe le nom de fichier en ByRef ou ByVal je me retrouve avec la même exception malheureusement :/
Etrangement, j'ai une autre fonction qui prends la mème chose en paramètre, celle la fonctionne bien...
- Modifié TonioX vendredi 6 janvier 2012 10:32
-
Bonjour,
Cela donne quoi avec un stringBuilder ? (http://stackoverflow.com/questions/162897/marshal-char-in-c-sharp)
Please always mark whatever response solved your issue so that the thread is properly marked as "Answered". -
-
Oui elle est bien présente, en l'explorant avec dependancy walker il la voit bien, et la DLL est utilisé sur d'autres programmes réalisés et en déja production dans ma boite. Mais ce sont des programmes codés en C++ sous borland.
Je trouve ca plutot bizarre, j'ai retourné la question et essayé plusieurs moyens avec des IntPtr et autres choses tordues, j'ai toujours la même erreur
-
-
Apres avoir regardé la source de la DLL, j'en conclu que le nom du fichier et son extension suffisent, du moment qu'il est avec l'exe. Mais j'ai testé une autre fonction, plus simple, sans pointeur, juste un Integer, il me fait la même erreur, ca doit donc venir de ma DLL qui est mauvaise. Je vous tiens au courant une fois que je suis fixé.
Merci.
Edit : J'ai trouvé la cause de mon problème, la DLL n'est pas totalement en cause, en fait, toutes les fonctions codées dans ma DLL reposent sur une seule, si celle la n'accorde pas l'accès toute la DLL est bloquée.Sauf que cette dite fonction a mal été codée et ne reconnais pas les bonnes chaines qu'on lui envoi. Je vais donc pouvoir continuer maintenant.
Encore merci à vous.
- Modifié TonioX vendredi 6 janvier 2012 13:13
- Marqué comme réponse Ciprian Duduiala mercredi 11 janvier 2012 11:39
-
Bonjour,
Merci pour avoir partagé avec nous la suite de vos démarches.
Bonne journée,
Cipri
Ciprian DUDUIALA, MSFT  
•Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.