Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.94/68: Рейтинг темы: голосов - 68, средняя оценка - 4.94
3 / 3 / 0
Регистрация: 13.11.2014
Сообщений: 32

Как подключить DLL

13.11.2014, 16:00. Показов 12624. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе время суток уважаемые участники


Пытаюсь написать программу по работе с усб мостом, столкнулся с программной проблемой Скачал длл, хедеры, библиотеку, всё что рекомендует производитель, но что с этим делать не совсем понимаю. В с++ новичок, си знаю чуть ниже среднего уровня. http://www.silabs.com/support%... /AN434.pdf

Создал простую программу в CodeBlocks
C++
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
#include <SLABCP2110.h>
#include <SLABHIDtoUART.h>
 
void HidUart_GetNumDevices();
 
int main(void)
{
    HidUart_GetNumDevices();
}
получаю ошибки
Code
1
2
3
4
5
C:\c_workspace\CBusart6\SLABHIDtoUART.h|218|error: expected initializer before 'HidUart_GetNumDevices'
 
C:\c_workspace\CBusart6\SLABHIDtoUART.h|222|error: expected initializer before 'HidUart_GetString'|
 
... и т.д.
ругается на SLABHIDtoUART.h. Добавлял и библиотеку и хедеры в проект, не работает и всё.

По советуйте что нибуть пожалуйста.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.11.2014, 16:00
Ответы с готовыми решениями:

Как подключить dll на C# к проекту (dll) на С++
Подскажите, пожалуйста, как подключить dll на C# к проекту (dll) на С++. В интернете много примеров, где показаны примеры по подключению...

Как подключить в С++ dll-ку из C#?
Создал в Visual Studio dll-ку на C#. Хочу подключить ее в С++, не выходит. HMODULE hm = LoadLibrary(L&quot;ImageLibrary.dll&quot;); ...

Как подключить dll к проекту?
Ребят помогите пожалуйста, если сможете а то я уже 3 дня долбаюсь чет никак не могу разобраться с этими dll. вот я написал код dll-ки ...

29
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.11.2014, 11:58
Студворк — интернет-сервис помощи студентам
Только одно большое НО, если хочешь что бы dll была "переносимой" она должна иметь интерфейс в стиле Си, не более, не должно быть "сложных" типов, классов и с опцией extert "C"
0
3 / 3 / 0
Регистрация: 13.11.2014
Сообщений: 32
14.11.2014, 16:00  [ТС]
Здорово! спасибо, сделал так как рекомендовал Kuzia domovenok, вроде компилится и запускается, но после после 16 строки выполняется условие оператора if "GetNumDevices not found at SLABHIDtoUART.dll ", что это может означать? Вроде ддлку видит, но почему функцию не находит. буду думать.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <windows.h>
//#include "SLABCP2110.h"
 
 
HMODULE MyLib=NULL;
typedef void (*Func_HidUart_GetNumDevices)();
Func_HidUart_GetNumDevices HidUart_GetNumDevices=NULL;
int main(){
 
  MyLib=LoadLibrary("SLABHIDtoUART.dll");
    if (!MyLib){
        OutputDebugString("library SLABHIDtoUART.dll not found");
        return 1;
    }
  HidUart_GetNumDevices=(Func_HidUart_GetNumDevices)GetProcAddress(MyLib, "GetNumDevices");
 
  if (!HidUart_GetNumDevices){
        OutputDebugString("GetNumDevices not found at SLABHIDtoUART.dll ");
        return 1;
  }
  //теперь можно работать
  HidUart_GetNumDevices();
 
  //если сильно память экономишь, потом можно выгрузить либу.
  FreeLibrary(MyLib);
  return 0;
}
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
14.11.2014, 16:53
Цитата Сообщение от Bvdvv Посмотреть сообщение
Вроде ддлку видит, но почему функцию не находит.
Может не видеть когда функции с таким именем в ней нет
например ДЛЛка сделана в стиле С++, тогда будет искажение имен
посмотри ДЛЛку каким нибудь просмотрщиком например PEexplorer секцию export
или банальная опечатка
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
14.11.2014, 17:43
Bvdvv, используй утилиты PEexplorer
либо DependencyWalker, чтобы посмотреть точные имена импортных функций
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
14.11.2014, 19:12
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
импортных функций
поправка, экспортируемых
ДЛЛка отдает свои функции, т.е экспортирует
0
3 / 3 / 0
Регистрация: 13.11.2014
Сообщений: 32
17.11.2014, 20:42  [ТС]
Прошу меня извинить ещё за один не скромный вопрос.

подправил код следующим образом
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stdio.h>
#include <stdlib.h>
 
#include <windows.h>
//#include "SLABCP2110.h"
 
 
HMODULE MyLib=NULL;
typedef int (*Func_HidUart_GetNumDevices)();
Func_HidUart_GetNumDevices HidUart_GetNumDevices=NULL;
int main(){
 
  MyLib=LoadLibrary("SLABHIDtoUART.dll");
    if (!MyLib){
        OutputDebugString("library SLABHIDtoUART.dll not found");
        return 1;
    }
 
 
  HidUart_GetNumDevices=(Func_HidUart_GetNumDevices)GetProcAddress(MyLib, "HidUart_GetNumDevices");
 
  if (!HidUart_GetNumDevices){
        printf("function not found\n");
        OutputDebugString("GetNumDevices not found at SLABHIDtoUART.dll ");
        return 1;
  }
   //int a;
   //a = HidUart_GetNumDevices();
   printf("%d\n",HidUart_GetNumDevices());
 
  //если сильно память экономишь, потом можно выгрузить либу.
  FreeLibrary(MyLib);
  return 0;
}
Длл'ка подключается, функцию HidUart_GetNumDevices в ддл'ке вроде находит, но при запуске ex-шник просто вылетает.
Понимаю что нельзя функцию одного типа засунуть в переменную другого. Но не пойму как записать или просмотреть значения которые возвращает функция HidUart_GetNumDevices. Просто у меня как у всех новичков проблемы с указателями.

В хедере функция обозначена так
C++
1
2
3
// HidUart_GetNumDevices
HID_TO_UART_API HID_UART_STATUS WINAPI
HidUart_GetNumDevices(DWORD* numDevices, WORD vid, WORD pid);
в апноуте пишут

2.1. HidUart_GetNumDevices

Description: This function returns the number of devices connected to the host with matching vendor and
product ID (VID, PID).

Prototype: HID_UART_STATUS HidUart_GetNumDevices (DWORD* numDevices, WORD vid, WORD
pid)
Parameters:
1. numDevices—Returns the number of devices connected on return.
2. vid—Filter device results by vendor ID. If both vid and pid are set to 0x0000, then HID devices
will not be filtered by VID/PID.
3. pid—Filter device results by product ID. If both vid and pid are set to 0x0000, then HID devices
will not be filtered by VID/PID.

Return Value: HID_UART_STATUS = HID_UART_SUCCESS
HID_UART_INVALID_PARAMETER
Направьте пожалуйста на правильный путь.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
17.11.2014, 21:12
Цитата Сообщение от Bvdvv Посмотреть сообщение
при запуске ex-шник просто вылетает.
в чём это выражается? ошибку пишет какую-то?

Добавлено через 48 секунд
Цитата Сообщение от Bvdvv Посмотреть сообщение
Просто у меня как у всех новичков проблемы с указателями.
это ты смело сейчас взял и опустил всех новичков.

Добавлено через 1 минуту
Цитата Сообщение от Bvdvv Посмотреть сообщение
(DWORD* numDevices, WORD vid, WORD pid);
у тебя эти параметры есть?
0
3 / 3 / 0
Регистрация: 13.11.2014
Сообщений: 32
18.11.2014, 08:26  [ТС]
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
в чём это выражается? ошибку пишет какую-то?
просто выскакивает виндовое окно что exeшник has stopped worked


Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
это ты смело сейчас взял и опустил всех новичков.
Хорошо, не у новичков проблема с указателями, а у таких чайников как я


Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
у тебя эти параметры есть?
у меня судя по всему этих параметров нет, вот и думаю как их получить
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
18.11.2014, 08:54
Цитата Сообщение от Bvdvv Посмотреть сообщение
у меня судя по всему этих параметров нет
Вот тебе и ответ почему рухает
функция ждет параметров, а ты их не даешь, в результате стек рушится и возвращается не туда куда нужно
Цитата Сообщение от Bvdvv Посмотреть сообщение
вот и думаю как их получить
получить ты должен от устройства, ищи функции которые их возвращают
или в описании устройства PID/VID
можно посмотреть в "Диспетчер устройств"
пока для проверки функции, можешь поставить 0
т.е примерно так

C++
1
2
DWORD numDevise;
HidUart_GetNumDevices(&numDevise,0,0);
Добавлено через 4 минуты
вот так можно получить номер устройства
C++
1
2
3
4
5
6
7
8
9
10
DWORD numDevise;
HID_UART_STATUS v=HidUart_GetNumDevices(&numDevise,0,0);
if(v==HID_UART_SUCCESS)
{
printf("%d",numDevise);
}
else
{
printf("Error");
}
1
3 / 3 / 0
Регистрация: 13.11.2014
Сообщений: 32
18.11.2014, 15:17  [ТС]
Спасибо большое
нашёл какой то япониский вариант плюс ваш и вроде работает.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdlib.h>
#include <windows.h>
#include <stdio.h>
#include <SLABCP2110.h>
#include <SLABHIDtoUART.h>
#include    <CP2114_Common.h>
 
#define VID (0x10C4)
 
#define PID (0xEA80)
 
int main()
{
DWORD numDevice;
//HID_UART_DEVICE dev=0;
HidUart_GetNumDevices(&numDevice,VID,PID);
printf("%d device(s) found.\n",numDevice);
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.11.2014, 15:17
Помогаю со студенческими работами здесь

Как подключить dll и lib SDL?
как подключить к проекту(в Visual Studio 2010) библиотеку SDL?// есть SDL.dll, SDL.lib и SDLmain.lib и еще папка с include'ами

Как подключить пользовательскую DLL к приложению
Добрый вечер! Я первый раз пишу dll. Вот ее текст: My.cpp: #include&lt;iostream&gt; #include &quot;My.h&quot; using namespace std; namespace...

Как подключить библиотеку i7000.dll?
у меня есть библиотека i7000.dll библиотека необходимая для работы с com портами все остальное работает нормально а эта работает только с 3...

Как подключить x86 dll библиотеку к x64 проекту
Планировал написать дополнение к моему коду на ассемблере. Но возникла проблема. Компилятор x64 в студии не поддерживает ассемблер. Решил...

Как создать файл DLL так, чтобы его можно было подключить к VBA Excel?
Пытаясь научиться подключать к VBA хотя бы самую тривиальную функцию на C++. Для примера написал на C++ простую функцию Kvadrat и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru