Ceci est mon code dll non géré C++.Pourquoi ByRef donne une exception lors du passage au code non managé?
void Only(char *a)
{
*a++ = 'p';
*a++ = 'r';
*a++ = 'a';
*a++ = 'n';
*a++ = 'i';
*a++ = 0;
}
Le fichier .DEF est utilisé pour exporter des symboles.
J'ai utilisé la fonction application uniquement VB.Net comme suit,
Declare Sub Only Lib "dllproj2.dll" Alias "Only" (b As StringBuilder)
....
Dim s As StringBuilder = New StringBuilder()
Only(s)
Il fonctionne très bien. Mais lorsque j'essaie d'utiliser b comme ByRef comme suit,
Declare Sub Only Lib "dllproj2.dll" Alias "Only" (ByRef b As StringBuilder)
Il donne l'exception montrée dans l'image.
Je ne comprends pas pourquoi. ByRef n'est-il pas plus approprié ici?
Merci.
Il est difficile de voir comment cela pourrait fonctionner de façon fiable. Comment la classe 'StringBuilder' peut-elle connaître le volume de stockage requis par la fonction C++? –
@JonathanPotter Quelle devrait être la solution à cela? Et comment supprimer ByRef le fait fonctionner? –