Нередко при разработке Native API библиотеки для 1С возникает больше вопросов, чем ответов. В этой статье собраны основные моменты, которые нужно проверить в первую очередь. С большой вероятностью, эта проверка позволит вашей компоненте успешно запуститься.
1. Наличие и корректность .def-файла
Первое, что нужно проверить, — это наличие файла *.def. Этот файл указывает, какие методы доступны для внешней среды. Без него компонента будет падать сразу после присоединения, так как 1С не сможет получить методы подключения.
В этом файле необходимо прописать как минимум 5 обязательных методов:
LIBRARY "AddInNative.dll"
EXPORTS
GetClassObject
DestroyObject
GetClassNames
SetPlatformCapabilities
GetAttachType
2. Возвращаемое значение Init
Следующий момент, на который стоит обратить внимание, — процедура Init. Убедитесь, что она возвращает Истину. Это очевидный шаг, но о нем иногда забывают, что приводит к неудачному подключению компоненты.
3. Типизация данных: WCHAR_T vs wchar_t
Последний и очень важный аспект — типизация данных. В C++ есть два похожих типа: WCHAR_T и wchar_t. Если ваши списки методов и процедур будут объявлены с типом WCHAR_T, инициализация не пройдет и компонента не подключится. 1С ожидает именно wchar_t.
Бонус: отладка подключения
Для отслеживания хода подключения очень удобно использовать метод OutputDebugStringW(L"Ваш текст"). Сообщения, которые он посылает, можно отслеживать с помощью программы DebugView от Sysinternals.
Просто запустите ее, попытайтесь подключить компоненту и читайте лог в реальном времени.
P.S. Не забывайте про правильное преобразование строк между WCHAR_T и wchar_t не только при инициализации, но и при дальнейшей работе, чтобы избежать падения компоненты.
Вступайте в нашу телеграмм-группу Инфостарт