Как и многие ранее, у меня также есть скомпилированная библиотека stati c (.lib), файл заголовочного файла (.h), на который она ссылается, но не исходный код. Эта библиотека обрабатывает связь с EEPROM от USB до последовательного чипа. Моя цель - вызвать эту библиотеку из C# в приложении WPF, которое позволит программировать EEPROM на встроенном устройстве. После недели исследований, которые я уже провел, по-видимому, мне нужно использовать C ++ / CLI, чтобы обернуть (.lib) адаптером типа logi c, который позволяет мне вызывать новый (.dll) содержащий неуправляемый код c из моего приложения WPF.
Я недоволен этими ссылками, а также многими другими:
Моя проблема в том, что они либо очень старые, недостаточно объяснительные, чтобы я мог связать их с моим проектом, либо они склонны концентрироваться на переносе классов. Я ДУМАЮ, что шаг 11 в блоге Том-Шелтона лучше всего объясняет, как обернуть класс. К сожалению, мне особенно необходимо понять, как применить это к структуре и функциям WINAPI, которые принимают эту структуру в качестве входных данных. Буду очень признателен за любую помощь, которую вы можете оказать.
CODE - (.h file)
#ifdef __cplusplus
extern "C" {
#endif
typedef struct _SOME_STRUCT
{
BOOL bSomeBool;
unsigned char Property1[2];
unsigned char Property2[44];
}SOME_STRUCT;
BOOL WINAPI Function1(HANDLE hSerialPort);
BOOL WINAPI Function2(HANDLE hSerialPort,SOME_STRUCT* SomeStruct);
#ifdef __cplusplus
}
#endif
Это то место, где мне становится немного волосатым , Я не уверен, что смогу обернуть эту функцию, поскольку один из входных параметров hSerialPort
- это РУЧКА. В частности, это РУЧКА, которая возвращается из неуправляемого вызова функции Microsoft CreateFile () . По ссылке
Функция возвращает дескриптор, который можно использовать для доступа к файлу или устройству для различных типов ввода / вывода в зависимости от файла или устройства и указанных флагов и атрибутов.
Таким образом, я считаю, что это означает, что HANDLE указывает последовательный порт, к которому осуществляется доступ, и я предполагаю, что .lib имеет весь лог c, необходимый для заполнения подключенного устройства свойствами, содержащимися в структуре.
Возможно ли это реализовать?