Вызов DLL, лыжи упорно отказываются ехать
-
- developer
- Сообщения: 257
- Зарегистрирован: 03 янв 2014, 19:37
- Версия LabVIEW: 2016
- Откуда: Украина, Киев
- Контактная информация:
Вызов DLL, лыжи упорно отказываются ехать
Здравствуйте, коллеги!
Подключаю сканер штрих-кода, решил погонять библиотеку от производителя.
и в энтой самой библиотеке следующий параметр:
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? в палитре работы с реестром можно создать ключ, удалить его, записать значение, но нельзя получить указатель на него. Как это грамотно сделать, чтобы ПО не было привязанно к определённой системе?
Спасибо!
Подключаю сканер штрих-кода, решил погонять библиотеку от производителя.
и в энтой самой библиотеке следующий параметр:
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? в палитре работы с реестром можно создать ключ, удалить его, записать значение, но нельзя получить указатель на него. Как это грамотно сделать, чтобы ПО не было привязанно к определённой системе?
Спасибо!
колдооооовствооооо! (С)
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 126 раз
- Контактная информация:
Re: Вызов DLL, лыжи упорно отказываются ехать
Наверно, всё же char *pszRegistryKey? А как выглядит сама функция? Ну, задайте этот аргумент в виде строки, что-нибудь типа "SOFTWARE\MyLVSoft\Public\1.00". По этому пути в ветке HKLM должен создасться ключ с настройками программы. Лучше, наверно, начать с "HKCU\[то же, что выше]", чтобы проблем с правами не было на ограниченных учетках.AlexanderKonoval писал(а):char pszRegistryKey
-
- developer
- Сообщения: 257
- Зарегистрирован: 03 янв 2014, 19:37
- Версия LabVIEW: 2016
- Откуда: Украина, Киев
- Контактная информация:
Re: Вызов DLL, лыжи упорно отказываются ехать
да, верно, * упустил при копировании с текста.
строку пробовал подавать. библиотека отвечает, но неверно. при этом конкретно у этой функции только 2 ответа - либо всё гут, либо нет, без расшифровок.
Пробовал и строку подавать, и переводить строку в массив чисел и так подавать, не работает.
строку пробовал подавать. библиотека отвечает, но неверно. при этом конкретно у этой функции только 2 ответа - либо всё гут, либо нет, без расшифровок.
Пробовал и строку подавать, и переводить строку в массив чисел и так подавать, не работает.
колдооооовствооооо! (С)
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 126 раз
- Контактная информация:
Re: Вызов DLL, лыжи упорно отказываются ехать
Всегда Си-шная строка подавалась в как C String Pointer, проблем не было. Можно, конечно, и как массив U8 отправить, но придётся добавить нулевой байт в конце. Попробуйте задать фиксированную длину строки, как на скрине. И ещё, может соглашение о вызове не то стоит?..
-
- developer
- Сообщения: 257
- Зарегистрирован: 03 янв 2014, 19:37
- Версия LabVIEW: 2016
- Откуда: Украина, Киев
- Контактная информация:
Re: Вызов DLL, лыжи упорно отказываются ехать
как-то пропустил мимо глаз, что кроме прочего получаю ошибку 1097, только сегодня уже нет сил разбираться в причине.
колдооооовствооооо! (С)
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 126 раз
- Контактная информация:
Re: Вызов DLL, лыжи упорно отказываются ехать
Эта ошибка ни о чём конкретно не говорит. Просто какие-то проблемы при вызове библиотеки. Или же соглашение о вызове не то, или порядок/количество аргументов не соответствует реальному, или типы аргументов не те, что должны быть.
-
Vitekkz88
- expert
- Сообщения: 1100
- Зарегистрирован: 21 янв 2014, 15:45
- Награды: 3
- Версия LabVIEW: 12,13,14
- Откуда: Томск
- Контактная информация:
Re: Вызов DLL, лыжи упорно отказываются ехать
Значит ответ Вы всё-таки получаете? Это уже хорошо, что функция Вам отвечает - значит обращение к ней работает.AlexanderKonoval писал(а):строку пробовал подавать. библиотека отвечает, но неверно. при этом конкретно у этой функции только 2 ответа - либо всё гут, либо нет, без расшифровок.
А эта ошибка возникает после ответ функции?AlexanderKonoval писал(а):как-то пропустил мимо глаз, что кроме прочего получаю ошибку 1097, только сегодня уже нет сил разбираться в причине.
Функция в качестве параметра принимает только указатель на строку? Больше ничего передавать не надо? Обратите внимание на порядок следования аргументов функции. Задавайте их в той же последовательности в CallLibNode, что и в прототипе вызываемой функции.
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
-А. И. Солженицын
-
- developer
- Сообщения: 257
- Зарегистрирован: 03 янв 2014, 19:37
- Версия LabVIEW: 2016
- Откуда: Украина, Киев
- Контактная информация:
Re: Вызов DLL, лыжи упорно отказываются ехать
да, получаю. не совсем понял вопрос о возникновении ошибки. Ну, с CallLibNode выходят 2 вещи - ответ и кластер ошибок. вот они вместе и выходят.Vitekkz88 писал(а): Значит ответ Вы всё-таки получаете? Это уже хорошо, что функция Вам отвечает - значит обращение к ней работает.
А эта ошибка возникает после ответ функции?
Функция в качестве параметра принимает только указатель на строку? Больше ничего передавать не надо? Обратите внимание на порядок следования аргументов функции. Задавайте их в той же последовательности в CallLibNode, что и в прототипе вызываемой функции.
Проблему нашёл - там был ещё второй параметр, unsigned char *pStatus. Я его подавал как Value, а надо было Pointer to Value, недосмотрел.
Но вот ошибка 1097 так и не исчезла, хотя библиотека исправно выполняет свои функции. Мне обработать несложно, но, может, есть какие-то пути избавиться от неё совсем?
Спасибо, что откликнулись!
колдооооовствооооо! (С)
-
Vitekkz88
- expert
- Сообщения: 1100
- Зарегистрирован: 21 янв 2014, 15:45
- Награды: 3
- Версия LabVIEW: 12,13,14
- Откуда: Томск
- Контактная информация:
Re: Вызов DLL, лыжи упорно отказываются ехать
Сложно сказать...Попробуйте поменять соглашение о вызове функции. Возможно стоит задавать определенный размер для параметров входных функций. Ну в общем я сейчас повторяю те же слова, что и dadreamer говорил Других вариантов пока нет.AlexanderKonoval писал(а):Но вот ошибка 1097 так и не исчезла, хотя библиотека исправно выполняет свои функции. Мне обработать несложно, но, может, есть какие-то пути избавиться от неё совсем?
Так на вскидку не определить и какой-то определенный метод посоветовать не удастся. Исходники функции есть?
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
-А. И. Солженицын
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 126 раз
- Контактная информация:
Re: Вызов DLL, лыжи упорно отказываются ехать
Это что ли массив U8? Тогда следует его (скорее всего) инициализировать. А какой должен быть размер? Вы можете скинуть прототип функции и полное описание сюда?unsigned char *pStatus
-
- developer
- Сообщения: 257
- Зарегистрирован: 03 янв 2014, 19:37
- Версия LabVIEW: 2016
- Откуда: Украина, Киев
- Контактная информация:
Re: Вызов DLL, лыжи упорно отказываются ехать
всё починил, спасибо за подсказки, очень помогли.
колдооооовствооооо! (С)
-
Vitekkz88
- expert
- Сообщения: 1100
- Зарегистрирован: 21 янв 2014, 15:45
- Награды: 3
- Версия LabVIEW: 12,13,14
- Откуда: Томск
- Контактная информация:
Re: Вызов DLL, лыжи упорно отказываются ехать
Каким образом исправили?Соглашение о вызове изменили?AlexanderKonoval писал(а):
всё починил, спасибо за подсказки, очень помогли.
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
-А. И. Солженицын
-
- developer
- Сообщения: 257
- Зарегистрирован: 03 янв 2014, 19:37
- Версия LabVIEW: 2016
- Откуда: Украина, Киев
- Контактная информация:
Re: Вызов DLL, лыжи упорно отказываются ехать
да, ошибку убрал путём изменения соглашения о вызове. У меня очень маленький опыт работы с .dll, написанных не на .NET, всегда делал через WINAPI, иначе не работало. А тут оказалось иначе.
вообще в восторге от их документации и SDK) ребятки сделали всё, чтобы процесс разработки ПО для их железяки занял максимальное количество времени
вообще в восторге от их документации и SDK) ребятки сделали всё, чтобы процесс разработки ПО для их железяки занял максимальное количество времени
колдооооовствооооо! (С)
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение