Utilisation DLL faite su VS c++ dans un projet vb.net 2008

meilop Messages postés 10 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 28 octobre 2011 - 21 sept. 2010 à 17:16
meilop Messages postés 10 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 28 octobre 2011 - 27 sept. 2010 à 15:50
Salut à tous,
VS2008
j'ai crée une dll en vs C++ que j'essaie d'executer dans un projet vb.net mais au moment de l'execution de mon programme vb.net qui appelle la methode--(classement(nombres(0)))-- de la dll j'ai une erreur du type:
"AccessViolationException was unhandled"
Tentativo di lettura o scrittura della memoria protetta. Spesso questa condizione indica che altre parti della memoria sono danneggiate.

voici mon code:
Public Class Form1
Declare Sub classement Lib "dll_classement" (ByVal nombres As Long)

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim nombres(0 To 10) As Long
Dim i As Integer
nombres(0) = 11

nombres(1) = 5
nombres(2) = 6
nombres(3) = 2
nombres(4) = 45
nombres(5) = 65
nombres(6) = 5
nombres(7) = 4
nombres(8) = 5
nombres(9) = 1
nombres(10) = 8

classement(nombres(0))

For i = 1 To nombres(0) - 1
List1.Items.Add(nombres(i))
Next i

End Sub
End Class

Si quelqu'un a une idée ou aurait dejà rencontré le probleme je le prie de bien vouloir me filer un coup de pousse.
Merci.
philippe meilo

5 réponses

Utilisateur anonyme
21 sept. 2010 à 20:44
Declare Sub classement Lib "dll_classement" (ByVal nombres As Long)


Tu as essayé avec ByRef ?
0
meilop Messages postés 10 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 28 octobre 2011
22 sept. 2010 à 09:42
Salut,
Merci pour ton coup de maitre.. ça marche!!! seul bemol quand je deplace l'exe et la DLL sur une machine voisine qui n'a pas de compilateur j'ai une erreur du genre:
"SystemBadImageFormatException"
Tentative de charger un programme de format non correct.
je voulais mettre l'image de l'erreur mais je n'arrive pas.
As tu une idée?
Merci

philippe meilo
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
22 sept. 2010 à 12:44
Ici tu trouveras de quoi faire des projets C correctement configurés:
TEMPLATES C/C++ POUR VS 2008
http://www.cppfrance.com/code.aspx?ID=44835

En résumé, une DLL devrait toujours:
- Etre compilée en pur C (pas de C++ ni autre cochonceté).
- Exporter en stdcall si 32 bits sinon fastcall.
- Ne se faire qu'en mode RELEASE (niet debug).

ciao...
BruNews, MVP VC++
0
Utilisateur anonyme
24 sept. 2010 à 06:45
Bonjour,
Il y a un sujet en anglais qui explique comment faire avec les versions VB et VB express pour exécuter un projet en mode 32-bits (compatibilité avec le framework et ta dll).
Bonne journée.
0

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

Posez votre question
meilop Messages postés 10 Date d'inscription mardi 17 décembre 2002 Statut Membre Dernière intervention 28 octobre 2011
27 sept. 2010 à 15:50
Bonjour,
L'enfer des Dll ne me laisse pas mème si j'ai fait des pas en avant depuis le premier post.
Voici comment j'ai procédé:
j'ai ouvert le code source de la fameuse dll et je suis allé dans projet-->propriété
-->configuration properties-->C/C++ -->General-->detect 64 bit properties issues -->
j'ai mis à yes(/Wp64)

j'ai fait partir le build de ma solution et je me suis rendu compte que ma dll è devenue portable pour les machines à 32 bit.

Seul bemol quand j'installe sur une machine qui à seven comme OS l'erreur
"SystemBadImageFormatException"
Tentative de charger un programme de format non correct. se represente et me voila avec une dll qui marche pas sur système à 64bit...
Merci.
philippe meilo
0
Rejoignez-nous