Bonjour,

Je veux acc�der � une simple fonction d'une DLL C++. Voici la d�claration du fichier .h concernant cette fonction:

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
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
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 Class
� l'ex�cution j'ai un message
AccessViolationException was unhandled.
J'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.

Qu'est-ce que je fais de pas correct?

Merci