Re[3]: Как получить строку из DLL на VB6
От: Vi2 Удмуртия http://www.adem.ru
Дата: 13.12.06 10:52
Оценка:
Здравствуйте, karp2005, Вы писали:

K>Поправил:

K>extern "C" void __declspec(dllexport) __stdcall EnumInterface(LPWSTR p_outString)

K>Теперь правильно?
K>Обращаюсь из VB k DLL так:
K>Declare Function  EnumInterface Lib "С:\mydll.dll"   (ByVal lpBuffer As String)

K>И тут мы слетаем......
K>Что я делаю снова не правильно?

Во-первых, EnumInterface не возвращает значение, значит, не функция, а подпрограмма.
Declare Sub EnumInterface Lib "С:\mydll.dll"   (ByVal lpBuffer As String)

Во-вторых, VB передает строки как LPSTR. Чтобы обойти преобразование строк, нужно передавать Long
Declare Sub EnumInterface "С:\mydll.dll" (ByVal s As Long)
...
  BufferLength& = 256 
  Buffer$ = Space$(BufferLength) 
Call EnumInterface(StrPtr(Buffer$))
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.