Это мой C++ неуправляемый код DLL.
void Only(char *a)
{
*a++ = 'p';
*a++ = 'r';
*a++ = 'a';
*a++ = 'n';
*a++ = 'i';
*a++ = 0;
}
Файл.def используется для экспорта символов.
Я использовал только функцию в приложении VB.Net следующим образом:
Declare Sub Only Lib "dllproj2.dll" Alias "Only" (b As StringBuilder)
....
Dim s As StringBuilder = New StringBuilder()
Only(s)
Он работает нормально. Но когда я пытаюсь использовать b как ByRef следующим образом,
Declare Sub Only Lib "dllproj2.dll" Alias "Only" (ByRef b As StringBuilder)
Это дает исключение, показанное на изображении.
Я не понимаю, почему. Не подходит ли ByRef здесь?
Благодарю.
Это должно быть ByVal
. Функция не будет перезаписывать ссылку на StringBuilder
. Он скорее обновит содержимое StringBuilder
. (См. Здесь аналогичный вопрос.)