Re: возвращение строки из dllexport функции
От: Leonid V. Volnin Россия  
Дата: 27.11.03 09:52
Оценка:
Здравствуйте, romstyop, Вы писали:

R>Привет All!

R>Такая проблема.
R>Код в dll VC6:
R>extern "C" __declspec(dllexport) BOOL ProcessD(LPCSTR FileName, LPSTR &pStrBuffer)
[skipped]
R>и есть GUI на VB:
R>Private Declare Function ProcessD Lib "mydll.dll" (ByVal FileName As String, ByRef strBuffer As String) As Integer

R>Label1.Caption = CStr(ProcessD("myfile.dat", str))


R> При debug dll выдается следующее:

R>HEAP[test.exe]: Heap block at 0014E2F8 modified at 0014E310 past requested size of 10
R>HEAP[test.exe]: Invalid Address specified to RtlSizeHeap( 00140000, 0014E300 )

R>Подскажите, как правильно возвратить строку, плиз.


Попробуй вместо LPSTR использовать тип VARIANT (с типом BSTR). С "вариантом" Бейсик работает нормально.
З.Ы. Естественно, что буфер под строку надо выделять в ProcessD .
best regards, Leonid
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.