Bonjour,
Je dois utiliser une dll en C en .net. Je suis reparti d'un cas simple car je n'arrive pas à la faire fonctionner.
J'ai compilé cette dll C en 32 bits avec mingw et configurer mon projet visual studio en 32 bits, là pas de soucis. Cela fonctionne. J'ai même les bonnes exceptions si la fonction n'est pas implémentée dans la lib et les bons résultats si elle l'est.
Ensuite étant sur cygwin en 64 bits j'ai fait de même en configurant bien mon visual studio sur une cible 64. Mais là c'est aléatoire. Soit ça marche impeccable. Soit ça crashe sans aucune exception, il se ferme juste. Et genre je la relance 5 ou 6 fois où ça crash et une fois ça va marcher... puis de nouveau plus rien. Je ne change absolument rien entre temps...
Si quelqu'un a des pistes car je ne sais pas du tout où regarder. Merci
Mon code C :
Mon code vb.net
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 #include <windows.h> __declspec(dllexport) int somme(int a, int b) { return a * b + 900; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Imports System Imports System.Runtime.InteropServices Public Class Form1 <DllImport("C:\TEMP\delete\prog\Test_DLL2\bin\Debug\startup.dll", CallingConvention:=CallingConvention.StdCall, CharSet:=CharSet.None)> Public Shared Function somme(ByVal a As Integer, ByVal b As Integer) As Integer End Function Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Try Dim res As Integer = somme(7, 4) TextBox1.Text = res Catch ex As Exception TextBox1.Text = ex.Message End Try End Sub End Class
Partager