Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года


E14-140 ошибка в example

Вы не вошли.

 Поиск | Регистрация | Вход 

иван
05.03.2011 11:45:13
#1

Гость

E14-140 ошибка в example

на пк стоит драйвер версии 2.1
Скачал libusb 2.1
затем открыли пример:
//lusbapi21//EXAMPLES//MicroSoft Visual C++//ReadData
затем на строке:
for(i=0; i<1000; i++) if(m->OpenLDevice(i)) break;
в main()
вылетела ошибка
Необработанное исключение в "0x0043e335" в "example.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00030002".

иван
05.03.2011 12:17:27
#2

Гость

Re: E14-140 ошибка в example

если  стартануть  примеры в папке билдера,  то пишет ,что точка входа  в процедуру CreateInstance не найдена в библиотеке libusb.dll. Возможно надо перекомпилировать  ДЛЛку...

05.03.2011 12:18:05
#3

Сотрудник "Л Кард"
Здесь с 18.04.2014
Сообщений: 810

Re: E14-140 ошибка в example

У меня собирается. Возможно, надо перегенерировать lusbapi.lib в формате того компилятора, которым собираете (утилитами типа implib, dlltool и т.п.)

Иван, а выбор столь древней версии библиотеки 2005 года чем-то продиктован? Давно есть lusbapi 3.3.

05.03.2011 12:21:13
#4

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,495

Re: E14-140 ошибка в example

1. Что сие означает: "на пк стоит драйвер версии 2.1"?
2. Вероятнее всего у Вас в системе уже стоит более свежая версия библиотеки Lusbapi.dll. Скопируйте в директорию с Вашим примером файл библиотеки Lusbapi.dll нужной версии 2.1. Файл можно взять из директории /lusbapi21/DLL/lusbapi.dll

иван
05.03.2011 12:22:46
#5

Гость

Re: E14-140 ошибка в example

пробывал запускать примеры с 3.0,3.1, 3.3 пишет что требуется 3.2 версия либусб(хотя в диспетчере устройства 2.1 в свойствах) ,если запустить пример из 3.2 , то пишет что ни один из Е140-40 не найден в 127 виртуальных слотах.

05.03.2011 12:24:26
#6

Сотрудник "Л Кард"
Здесь с 18.04.2014
Сообщений: 810

Re: E14-140 ошибка в example

Драйвер переставьте. На странице, откуда скачивается lusbapi, это красным шрифтом написано.

05.03.2011 12:31:37
#7

Сотрудник "Л Кард"
Здесь с 18.04.2014
Сообщений: 810

Re: E14-140 ошибка в example

1) Не libusb, а lusbapi
2) В диспетчере устройств не может быть версии  библиотеки, там версия драйвера
3) Примеры надо брать, конечно же, от той версии библиотеки, которую запускаете. Точнее говоря, прикладная программа должна быть собрана с lusbapi.h СТРОГО от того же lusbapi.dll, который реально используется.
3) lusbapi 3.2 и выше использует универсальный драйвер ldevusbu.sys, единый для всех USB устройств L-Card. Более старые версии используют драйвер ldevusb.sys. Если драйвер не тот, то устройство не будет найдено библиотекой.

иван
05.03.2011 12:53:50
#8

Гость

Re: E14-140 ошибка в example

Александр Е , просто сделали в 2005 - 2006 году программу для работы с lcard, а он работает со старыми драйверами.

Сергей,
1. Мой ПК-> оборудование-> диспетчер устройств-> lcard И там в свойствах версия написана.

05.03.2011 13:01:43
#9

Сотрудник "Л Кард"
Здесь с 18.04.2014
Сообщений: 810

Re: E14-140 ошибка в example

Ну если остается 2.1, тогда проверьте (сделайте свой) .lib файл и проверьте соответствие версий .h и .dll, положите dll в директорию с прикладной программой для ясности.

иван
05.03.2011 13:07:30
#10

Гость

Re: E14-140 ошибка в example

ldevusb.inf
ldevusb.sys
wdmsrub.sys
стоят, как я понял они старые и не универсальные

иван
05.03.2011 13:14:31
#11

Гость

Re: E14-140 ошибка в example

в папке
//lusbapi21//DLL

а сам длл фаил версии там:
2.1.0.0

Извините за глупый вопрос... А как пересобрать lib фаил?
Я как понимаю  он находится  в //lusbapi21//DLL//MicroSoft
Там есть makelib.bat в котором :

lib.exe /def:lusbapi.def  /out:lusbapi.lib
lib.exe /def:wlusbapi.def /out:wlusbapi.lib

но lib.exe в папке нету. Как быть?

05.03.2011 13:25:27
#12

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,495

Re: E14-140 ошибка в example

1. Просто скопируйте этот файл (lusbapi.dll) в директорию с примером.
2. Готовые библиотеки импорта (lusbapi.lib) под разные среды программирования можно найти в директориях: /lusbapi21//DLL/Borland, /lusbapi21//DLL/MicroSoft и /lusbapi21//DLL//Watcom

05.03.2011 14:48:21
#13

Сотрудник "Л Кард"
Здесь с 18.04.2014
Сообщений: 810

Re: E14-140 ошибка в example

3. А если ваш компилятор хочет другой формат .lib, то можно:
а) с помощью соответствующих утилит сделать .lib файл из .dll, .def, .h - как именно, зависит от набора средств разработки.
б) пересобрать саму библиотеку, получив на выходе .lib и .dll.

А какой у вас компилятор, собственно?

Иван
05.03.2011 19:14:17
#14

Гость

Re: E14-140 ошибка в example

Сергей,
1. я так и делал
2. я так и делал
Александр Е
3.
а) да , это и хочу попытаться сделать
б) ну да

Поставил на ПК новый драйвер и те examples которые были в папке lusbapi33 стартанулись(хотя я 1 только проверил,но все равно уже что-то).

Вот у меня есть прога(до меня делалась) она 2005-06 года ,её пилили под старый драйвер и  там старая дллка.

хочу её перевести на lusbapi 3.3 то есть последней версии.

В качестве компилятора  использую  Билдер 6 с++.
В директорию с прогой, залил фаилы как советовал Сергей из //lusbapi33//DLL//Bin

заменил в папке этой проги dll , lib и h фаилы
новых lusbapi  и прога перестала работать, а на старой версии драйвера она работала.

То есть мне надо её перевести...

Сейчас хочу перекомпилировать и получить новые dll  и lib фаилы, думаю ,что из за них весь касяк.

В билдере6С++ открываю  Wizard Dll, затем выбираю с++ и VCL поддержку. Потом в проект добавляю недостающие  cpp и h фаилы. Убираю  RTL dynamic и build with runtime packeges.
Потом собираю и в результате в директории появляются 2 фаила lib и dll. Открываю прогу и пишет что точка входа в процедуру CreateInstance не найдена в dll lusbapi.dll.

Код программы для старых версий(то есть прога запиленная для старой версии драйвера и дллки) должна же работать если поменять драйвер на новый и lkkre и lib  заменить на новые?

Иван
05.03.2011 19:32:09
#15

Гость

Re: E14-140 ошибка в example

[C++ Error] Main.cpp(18): E2141 Declaration syntax error
[C++ Error] Main.cpp(271): E2316 //'ChannelRate//' is not a member of //'ADC_PARS_E140//'
[C++ Error] Main.cpp(277): E2034 Cannot convert //'short *//' to //'IO_REQUEST_LUSBAPI *//'
[C++ Error] Main.cpp(277): E2342 Type mismatch in parameter //'ReadRequest//' (wanted //'IO_REQUEST_LUSBAPI * const//', got //'short *//')
[C++ Error] Main.cpp(277): E2227 Extra parameter in call to __stdcall ILE140::ReadData(IO_REQUEST_LUSBAPI * const)
[C++ Warning] Main.cpp(351): W8004 //'size//' is assigned a value that is never used
[C++ Error] Main.cpp(438): E2268 Call to undefined function //'CreateInstance//'
[C++ Error] Main.cpp(438): E2031 Cannot cast from //'int//' to //'ILE140 *//'
[C++ Error] Main.cpp(451): E2316 //'GET_MODULE_DESCR//' is not a member of //'ILE140//'
[C++ Error] Main.cpp(451): E2451 Undefined symbol //'descr//'
[C++ Error] Main.cpp(451): E2316 //'GET_CUR_ADC_PARS//' is not a member of //'ILE140//'
[C++ Error] Main.cpp(476): E2316 //'FILL_ADC_PARS//' is not a member of //'ILE140//'
[C++ Error] Main.cpp(480): E2316 //'GET_CUR_ADC_PARS//' is not a member of //'ILE140//'
[C++ Error] Main.cpp(487): E2316 //'ChannelRate//' is not a member of //'ADC_PARS_E140//'
[C++ Error] Main.cpp(618): E2316 //'ReleaseLDevice//' is not a member of //'ILE140//'
[C++ Error] Main.cpp(1633): E2015 Ambiguity between //'_fastcall System::operator +(int,const System::Currency &)//' and //'_fastcall System::operator +(int,const System::Variant &)//'
[C++ Error] Main.cpp(1822): E2316 //'ReleaseLDevice//' is not a member of //'ILE140//'

это из-за переработки dll  ?  Теперь прогу переписывать придется?

Иван
05.03.2011 19:38:24
#16

Гость

Re: E14-140 ошибка в example

просто прога перестала знать эти структуры получается, так? ) MODULE_DESCR_E140 стала MODULE_DESCRIPTION_E140....
Кстати у вас в небольшой касяк в исходниках дллки fabs не знает, надо include <math.h> добавить

05.03.2011 20:05:35
#17

Сотрудник "Л Кард"
Здесь с 18.04.2014
Сообщений: 810

Re: E14-140 ошибка в example

Да, для перехода с lusbapi 2.x на 3.x потребуется довольно много изменений в программе.

Если все работает и с 2.x, то можно вернуться к старому драйверу и старой dll, и просто решить проблему с lib файлом.
Перед тем как ответить первый раз в эту ветку, я проделал опыт: скачал lusbapi21, воткнул E14-140, сменил драйвер на старый и собрал пример ReadData заведомо неродным компилятором (gcc/MinGW), для чего перестроил lusbapi.lib соответствующей утилитой (для gcc это dlltool). Все собралось и запустилось. Может понадобиться подправить .def файл.