У меня есть опыт работы с C# и C / C ++, но я никогда не работал с DLL, поэтому я пытаюсь выяснить, как это работает.
Мне нужно интегрировать нативный интерфейс API dll между третьей частью Программное обеспечение и мой будущий маленький SW, который собирается заменить оригинал.
Спецификации из третьей части ограничены и описывают прототип как:
Error GetInfo([in/out]LPTSTR errorInfo, [in]DWORD errorBufferLength);
Я создал проект dll с CodeBlocks и MINGW Теперь моя цель - получить первоначальный отзыв, поэтому в файле dll. cpp Я написал этот код:
DLL_EXPORT TCHAR x[5];
Error DLL_EXPORT GetInfo(LPTSTR errorInfo, DWORD errorBufferLength)
{
x = TEXT("test");
errorInfo = x;
errorBufferLength = sizeof(TCHAR*5);
return NO_ERROR;
}
, а в main.h есть:
extern "C" DLL_EXPORT TCHAR x[];
#ifdef __cplusplus
extern "C"
{
#endif
Error DLL_EXPORT GetInfo(LPTSTR errorInfo, DWORD ErrorBufferLength);
}
когда я просматриваю журнал третьей части в строке errorInfo, я обнаружил «поврежденную» строку с символом ASCII, как будто я указываю на неправильную позицию в памяти или формат неверный. Используя оригинальную DLL, вывод верен. Я пробовал разные формы, чтобы назначить правильные значения указателю LPTSTR и DWORD, но я уверен, что что-то упускаю из теории.
Есть ли у вас какие-либо предложения? Извините за мое "быть новичком"