Bonjour,
Je veux accéder à une simple fonction d'une DLL C++. Voici la déclaration du fichier .h concernant cette fonction:
Donc le paramètre de cette fonction est un pointeur vers une string qui contiendra le texte indiquant le numéro de version. Mon code VB.Net pour y accéder est le suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 #define API_SPEC __declspec(dllexport) void API_SPEC API_getApiVersion (std::wstring *version) //[out] API release ID
À l'exécution j'ai un message
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Public Class Form1 <DllImport("C:\Api.dll", EntryPoint:="?API_getApiVersion@@YAXPAV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@@Z", CallingConvention:=CallingConvention.ThisCall, CharSet:=CharSet.Unicode)> _ Public Shared Sub test(ByVal version As String) End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim laVersion As String = New String(" "c, 20) Call test(laVersion ) MessageBox.Show(laVersion) End Sub End ClassJ'ai essayé de passer ma variable 'version' en ByRef au lieu de ByVal mais ça ne règle rien. J'ai aussi essayé de passer un type StringBuilder au lieu du type string mais sans résultat.AccessViolationException was unhandled.
Qu'est-ce que je fais de pas correct?
Merci
Partager