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

K>Есть такой код на C++ (DLL):

K>extern "C" __declspec(dllexport) void EnumInterface(LPCTSTR p_outString)  //указатель на строку
K>{
K>.....объявление переменных........
K>RPC_WSTR strGuid = NULL;
K>__try
K>{
K>..............некоторые действия.................................
K>if (UuidToStringW(&pIntfList->InterfaceInfo.InterfaceGuid, &strGuid) == RPC_S_OK)
K>{
K>wcscpy((LPWSTR)p_outString,(LPWSTR)strGuid);
K>RpcStringFreeW(&strGuid);
K>}
K>}
K>__finally
K>{
K>....очищаем память....
K>}
K>}

K>Вопрос:
K>1. правильно ли я возвращаю строку копируя её в область памяти, выделеной вызывающим процессом? (в случае с С — нечто типа wchar_t *test; test = new wchar_t[64]

Правильно, но если учесть, что LPCTSTR — это не совсем LPWSTR, то неправильно.

K>2. Как правильно эту ДЛЛ вызвать из VB6 (чтобы вернуть в вызывающую программу строку wstring)?


Никак, потому что VB умеет вызывать только stdcall функции.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.