Меню

+7 (495) 785-95-25
sale@lcard.ru
sale@lcard.ru
Страницы 1
Тема закрыта
|
||||
|
CreateLInstance("e140")Файл #include <stdio.h>
#pragma comment (lib, "Lusbapi.lib") #ifdef __cplusplus
ILE140 *pModule;
void findADC()
#ifdef __cplusplus
не работает pModule = static_cast<ILE140 *>(CreateLInstance("e140")); Что должно быть в папке с файлом?
|
|||
|
||||
|
Re: CreateLInstance("e140")не работает вот это pModule = static_cast<ILE140 *>(CreateLInstance("e140")); 1. Библиотека 3.3 в проект включена. Компилирует все отлично.
|
|||
|
||||
|
Re: CreateLInstance("e140")1. Что конкретно означает "не работает вот это pModule = static_cast<..."?
|
|||
|
||||
|
Re: CreateLInstance("e140")Я пишу программу на java.
строки:
if(!pModule)
при выполнении (java) выбивает ошибку:
То есть ошибка в native (c/c++) коде.
АЦП не подключен, то есть pModule == null, по-этому я ожидаю увидеть ошибку ("ERROR"), но ее нет( Возможно ошибка в подключении библиотеки.
Скажите подробнее, что делать с Lusbapi.lib and Lusbapi.dll файлами?
|
|||
|
||||
|
Re: CreateLInstance("e140")>При необходимости егоСкажите подробнее, что делать с Lusbapi.lib and Lusbapi.dll файлами? А также с Lusbapi.h? .h включается в исходный текст через #include
Возможно, проблема в том, что lib файл не подходит к вашему компилятору. Чем собираете C++ проект?
При необходимости можно пересоздать lib заново, например, как-то так (пример для MS):
|
|||
|
||||
|
Re: CreateLInstance("e140")ну я писал в программе Dev-Cpp..
установлю Visual studio, попробую там скомпилировать. |
|||
|
||||
|
Re: CreateLInstance("e140")>ну я писал в программе Dev-Cpp.. Ага, так там же gcc. Для него можно сгенерить .lib dlltool -l lusbapi.lib -d lusbapi.def -k где lusbapi.def - текстовый файл следующего содержания: LIBRARY lusbapi.dll
|
|||
|
||||
|
Re: CreateLInstance("e140")Пробовал менять lib файлы, без ошибки компилируется только тот, что в папке MicroSoft. dll файл находиться в системной папке (system32). вот #includs #include "jni.h"
jni.h
Lusbapi.lib я добавил в компоновщик... Обьясните пожалуйста, как взаемодействуют h,lib,dll файлы? |
|||
|
||||
|
Re: CreateLInstance("e140")Все работает, перекомпилировал в VisualStudio, выводит ошибку -> значит работает. Спасибо за помощь!!!! |
|||
|
||||
|
Re: CreateLInstance("e140")Перегенерите файл dlltool/'ом, как написано в предыдущем сообщении. У меня gcc-mingw криво собирал с .lib для микрософта. >Обьясните пожалуйста, как взаемодействуют h,lib,dll файлы? Между собой никак 1) .h файл нужен, чтобы компилятор увидел идентификаторы типов, переменных и функций, иначе они будут не определены (undefined) и будет ошибка компиляции. (Кстати, в отношении функций здесь есть тонкость: компилятор может не выдать ошибку, если нет прототипа, но собрать неверный код - http://stackoverflow.com/questions/9182 … tions-in-c ) 2) .lib файл - это объектный код, с которым линкер сопоставит вызовы этих функций. Можно сказать, что .lib - это коллекция из одного или более .obj В нашем случае, с динамической библиотекой, .lib файл будет содержать не сам код, а некую затычку, которая говорит "поставь тут вызов функции из таблицы импорта, модуль такой-то.dll, экспортируемое имя такое-то". .dll файл - это динамическая библиотека
Кстати, еще можно импортировать функции из DLL совсем динамически - во время выполнения программы. Для этого есть функции API LoadLibrary и GetProcAddress. |
|||
|
||||
|
Re: CreateLInstance("e140")Спасибо большое за помощь! |
Страницы 1
Тема закрыта