Вызов DLL, лыжи упорно отказываются ехать

ActiveX, .NET, DLL
Ответить
AlexanderKonoval
developer
developer
Сообщения: 257
Зарегистрирован: 03 янв 2014, 19:37
Версия LabVIEW: 2016
Откуда: Украина, Киев
Контактная информация:

Вызов DLL, лыжи упорно отказываются ехать

Сообщение AlexanderKonoval »

Здравствуйте, коллеги!

Подключаю сканер штрих-кода, решил погонять библиотеку от производителя.
и в энтой самой библиотеке следующий параметр:

char pszRegistryKey
Pointer to the string representing the HKLM registry key in which the library can create a subkey where the persistent registry settings can be stored. A HKCU registry key will be used if the string starts with these five characters “HKCU\”.

собственно, вопрос, как мне получить указатель на строку реестра в char? в :labview: палитре работы с реестром можно создать ключ, удалить его, записать значение, но нельзя получить указатель на него. Как это грамотно сделать, чтобы ПО не было привязанно к определённой системе?

Спасибо!
колдооооовствооооо! (С)
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Вызов DLL, лыжи упорно отказываются ехать

Сообщение dadreamer »

AlexanderKonoval писал(а):char pszRegistryKey
Наверно, всё же char *pszRegistryKey? А как выглядит сама функция? Ну, задайте этот аргумент в виде строки, что-нибудь типа "SOFTWARE\MyLVSoft\Public\1.00". По этому пути в ветке HKLM должен создасться ключ с настройками программы. Лучше, наверно, начать с "HKCU\[то же, что выше]", чтобы проблем с правами не было на ограниченных учетках.
AlexanderKonoval
developer
developer
Сообщения: 257
Зарегистрирован: 03 янв 2014, 19:37
Версия LabVIEW: 2016
Откуда: Украина, Киев
Контактная информация:

Re: Вызов DLL, лыжи упорно отказываются ехать

Сообщение AlexanderKonoval »

да, верно, * упустил при копировании с текста.
строку пробовал подавать. библиотека отвечает, но неверно. при этом конкретно у этой функции только 2 ответа - либо всё гут, либо нет, без расшифровок.
Пробовал и строку подавать, и переводить строку в массив чисел и так подавать, не работает.
колдооооовствооооо! (С)
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Вызов DLL, лыжи упорно отказываются ехать

Сообщение dadreamer »

Всегда Си-шная строка подавалась в :labview: как C String Pointer, проблем не было. Можно, конечно, и как массив U8 отправить, но придётся добавить нулевой байт в конце. Попробуйте задать фиксированную длину строки, как на скрине. И ещё, может соглашение о вызове не то стоит?..
Вложения
2015-02-12_22-08-36.jpg
AlexanderKonoval
developer
developer
Сообщения: 257
Зарегистрирован: 03 янв 2014, 19:37
Версия LabVIEW: 2016
Откуда: Украина, Киев
Контактная информация:

Re: Вызов DLL, лыжи упорно отказываются ехать

Сообщение AlexanderKonoval »

как-то пропустил мимо глаз, что кроме прочего получаю ошибку 1097, только сегодня уже нет сил разбираться в причине.
колдооооовствооооо! (С)
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Вызов DLL, лыжи упорно отказываются ехать

Сообщение dadreamer »

Эта ошибка ни о чём конкретно не говорит. Просто какие-то проблемы при вызове библиотеки. Или же соглашение о вызове не то, или порядок/количество аргументов не соответствует реальному, или типы аргументов не те, что должны быть.
Аватара пользователя
Vitekkz88

Activity Silver Автор
expert
expert
Сообщения: 1100
Зарегистрирован: 21 янв 2014, 15:45
Награды: 3
Версия LabVIEW: 12,13,14
Откуда: Томск
Контактная информация:

Re: Вызов DLL, лыжи упорно отказываются ехать

Сообщение Vitekkz88 »

AlexanderKonoval писал(а):строку пробовал подавать. библиотека отвечает, но неверно. при этом конкретно у этой функции только 2 ответа - либо всё гут, либо нет, без расшифровок.
Значит ответ Вы всё-таки получаете? Это уже хорошо, что функция Вам отвечает - значит обращение к ней работает.
AlexanderKonoval писал(а):как-то пропустил мимо глаз, что кроме прочего получаю ошибку 1097, только сегодня уже нет сил разбираться в причине.
А эта ошибка возникает после ответ функции?
Функция в качестве параметра принимает только указатель на строку? Больше ничего передавать не надо? Обратите внимание на порядок следования аргументов функции. Задавайте их в той же последовательности в CallLibNode, что и в прототипе вызываемой функции.
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
AlexanderKonoval
developer
developer
Сообщения: 257
Зарегистрирован: 03 янв 2014, 19:37
Версия LabVIEW: 2016
Откуда: Украина, Киев
Контактная информация:

Re: Вызов DLL, лыжи упорно отказываются ехать

Сообщение AlexanderKonoval »

Vitekkz88 писал(а): Значит ответ Вы всё-таки получаете? Это уже хорошо, что функция Вам отвечает - значит обращение к ней работает.

А эта ошибка возникает после ответ функции?
Функция в качестве параметра принимает только указатель на строку? Больше ничего передавать не надо? Обратите внимание на порядок следования аргументов функции. Задавайте их в той же последовательности в CallLibNode, что и в прототипе вызываемой функции.
да, получаю. не совсем понял вопрос о возникновении ошибки. Ну, с CallLibNode выходят 2 вещи - ответ и кластер ошибок. вот они вместе и выходят.

Проблему нашёл - там был ещё второй параметр, unsigned char *pStatus. Я его подавал как Value, а надо было Pointer to Value, недосмотрел.

Но вот ошибка 1097 так и не исчезла, хотя библиотека исправно выполняет свои функции. Мне обработать несложно, но, может, есть какие-то пути избавиться от неё совсем?

Спасибо, что откликнулись!
колдооооовствооооо! (С)
Аватара пользователя
Vitekkz88

Activity Silver Автор
expert
expert
Сообщения: 1100
Зарегистрирован: 21 янв 2014, 15:45
Награды: 3
Версия LabVIEW: 12,13,14
Откуда: Томск
Контактная информация:

Re: Вызов DLL, лыжи упорно отказываются ехать

Сообщение Vitekkz88 »

AlexanderKonoval писал(а):Но вот ошибка 1097 так и не исчезла, хотя библиотека исправно выполняет свои функции. Мне обработать несложно, но, может, есть какие-то пути избавиться от неё совсем?
Сложно сказать...Попробуйте поменять соглашение о вызове функции. Возможно стоит задавать определенный размер для параметров входных функций. Ну в общем я сейчас повторяю те же слова, что и dadreamer говорил :D Других вариантов пока нет.
Так на вскидку не определить и какой-то определенный метод посоветовать не удастся. Исходники функции есть?
Вложения
Соглашение о вызове.
Соглашение о вызове.
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Вызов DLL, лыжи упорно отказываются ехать

Сообщение dadreamer »

unsigned char *pStatus
Это что ли массив U8? Тогда следует его (скорее всего) инициализировать. А какой должен быть размер? Вы можете скинуть прототип функции и полное описание сюда?
AlexanderKonoval
developer
developer
Сообщения: 257
Зарегистрирован: 03 янв 2014, 19:37
Версия LabVIEW: 2016
Откуда: Украина, Киев
Контактная информация:

Re: Вызов DLL, лыжи упорно отказываются ехать

Сообщение AlexanderKonoval »

всё починил, спасибо за подсказки, очень помогли.
колдооооовствооооо! (С)
Аватара пользователя
Vitekkz88

Activity Silver Автор
expert
expert
Сообщения: 1100
Зарегистрирован: 21 янв 2014, 15:45
Награды: 3
Версия LabVIEW: 12,13,14
Откуда: Томск
Контактная информация:

Re: Вызов DLL, лыжи упорно отказываются ехать

Сообщение Vitekkz88 »

AlexanderKonoval писал(а):
всё починил, спасибо за подсказки, очень помогли.
Каким образом исправили?Соглашение о вызове изменили?
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
AlexanderKonoval
developer
developer
Сообщения: 257
Зарегистрирован: 03 янв 2014, 19:37
Версия LabVIEW: 2016
Откуда: Украина, Киев
Контактная информация:

Re: Вызов DLL, лыжи упорно отказываются ехать

Сообщение AlexanderKonoval »

да, ошибку убрал путём изменения соглашения о вызове. У меня очень маленький опыт работы с .dll, написанных не на .NET, всегда делал через WINAPI, иначе не работало. А тут оказалось иначе.

вообще в восторге от их документации и SDK) ребятки сделали всё, чтобы процесс разработки ПО для их железяки занял максимальное количество времени :crazy:
колдооооовствооооо! (С)
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Коммуникация с приложениями»