Как отправлять и получать строки из библиотеки DLL, написанной на C++, в VB6.
Здравствуйте дамы и господа из проекта Code,
Я пытаюсь понять, как отправлять и получать строки из функции, написанной на C++ (с использованием Visual Studio 2015), в VB6.
Обратите внимание, что строки будут отправляться и приниматься из списка аргументов функции
У меня есть опыт работы с VB6, но не с C++!
Декларация выглядит следующим образом:
VBDLLFUNC(инт) MDNSa35dbd7v2(инт обслуживание, инт AC0_CryptoKeyTable, без знака типа char* семенного материала, без знака типа char* ключ);
Код/оболочка выглядит следующим образом:
VBDLLFUNC(инт) MDNSa35dbd7v2(инт обслуживание, инт AC0_CryptoKeyTable, без знака типа char* семенного материала, без знака типа char* ключ) {
возвращение (a35dbd7v2(обслуживание, AC0_CryptoKeyTable, семян, ключ));
}
Где #определить VBDLLFUNC(Имя_типа) с атрибутом dllexport имя как __stdcall
У меня есть следующее объявление в моем коде VB6:
Объявить функцию MDNSa35dbd7v2 Lib "MDTestDLL.dll" (бывал служба покуда, бывал
CryptoKeyTable Как Долго, Семя Бывал В Строку, Ключ Как Byref Как Строка) Как Долго
В моем событии загрузки формы я вызываю функцию следующим образом:
Частная Суб Form_Load()
Дим лретваль как долго
Тусклый Скей как струна
Dim sSeed как строка
Клиент говорит мне, что если вызовите MDNSa35dbd7v2 с sSeed = 5 байт из 11 (я не знаю, означают ли они 11 dec или B hex) в качестве sSeed
sSeed = Chr(11) & Chr(11) & Chr(11) & Chr(11) & amp; Chr(11)
Я должен вернуть 5 байт из 22 для sKey
lRetVal = MDNSa35dbd7v2(&H1, &H3C, sSeed, sKey)
Конец Подводной Лодки
Вопрос, который у меня есть, заключается в следующем: поскольку я имею дело с VB6, то объявление функций и сама функция, возможно, должны быть объявлены следующим образом:
VBDLLFUNC(инт) MDNSa35dbd7v2(инт обслуживание, инт AC0_CryptoKeyTable, тип BSTR семян, тип BSTR
ключ);
VBDLLFUNC(инт) MDNSa35dbd7v2(инт обслуживание, инт AC0_CryptoKeyTable, тип BSTR семян, тип BSTR ключ) {
возвращение (a35dbd7v2(обслуживание, AC0_CryptoKeyTable, семян, ключ));
}
Пожалуйста, также имейте в виду, что объявление заголовка для a35dbd7v2 выглядит следующим образом:
модификатор extern ключевое слово __declspec(dllexport) или a35dbd7v2 инт(инт обслуживание, инт AC0_CryptoKeyTable, без знака типа char* семенного материала, без знака типа char* ключ);
Поскольку я вызываю эту функцию из VB6, а VB6 использует BSTR при работе со строками, то как бы я преобразовал BSTR в unsigned char*?
Пожалуйста, посоветуйте
Спасибо
Что я уже пробовал:
Я погуглил и думаю, что могу быть близок к этому