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

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

13.11.2014, 16:00. Показов 12714. Ответов 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
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
13.11.2014, 16:05
Добавлял и библиотеку и хедеры в проект, не работает и всё.
не так добавляете видимо, там где main.cpp находится туда киньте и заголовки и .lib файл
или пропишите к ним пути в настройках проекта
а .dll туда где хранится скомпилированный .exe
0
3 / 3 / 0
Регистрация: 13.11.2014
Сообщений: 32
13.11.2014, 16:11  [ТС]
всё закинул в папку с проектом, пытался уже и в Qt и в VS2010 делать всё одно и то же
0
13.11.2014, 16:32

Не по теме:

вроде как пишут что разработку надо вести в ней "Simplicity Studio" может в этом причина?)

0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
13.11.2014, 16:37
Цитата Сообщение от Bvdvv Посмотреть сообщение
всё закинул в папку с проектом, пытался уже и в Qt и в VS2010 делать всё одно и то же
а к проекту то подключил?
он тебе говорит что не знает где реализованы файлы 'HidUart_GetNumDevices' и прочие
значит или не подключена библиотека lib и линкер не знает ничего
или исходные файлы, тогда компилятор не компилит
0
3 / 3 / 0
Регистрация: 13.11.2014
Сообщений: 32
13.11.2014, 16:42  [ТС]
Цитата Сообщение от aLarman Посмотреть сообщение

Не по теме:

вроде как пишут что разработку надо вести в ней "Simplicity Studio" может в этом причина?)

Хм, в примерах которые я скачал , есть проект для Visual Studio но он не компилится тоже

Добавлено через 1 минуту
Цитата Сообщение от ValeryS Посмотреть сообщение
а к проекту то подключил?
он тебе говорит что не знает где реализованы файлы 'HidUart_GetNumDevices' и прочие
значит или не подключена библиотека lib и линкер не знает ничего
или исходные файлы, тогда компилятор не компилит
Библиотеку подключил конечно, проблема в том что я уже пробовал так всё собирать ,, вроде бы со всеми подключениями в трёх средах, Qt, CodeBlocks и VS2010 и везде одна ошибка.
0
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
13.11.2014, 16:44
Цитата Сообщение от Bvdvv Посмотреть сообщение
void HidUart_GetNumDevices();
быть может вот эту строку не надо? она же уже объявлена в каком то хедере
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,532
Записей в блоге: 1
13.11.2014, 16:50
Bvdvv,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
HMODULE MyLib=NULL;
typedef void (*Func_HidUart_GetNumDevices)();
Func_HidUart_GetNumDevices HidUart_GetNumDevices=NULL;
int main(){
  MyLib=LoadLibrary("abracadabra.dll");
    if (!MLib){
        OutputDebugString("library abracadabra.dll not found");
        return 1;
    }
  HidUart_GetNumDevices=(Func_HidUart_GetNumDevices)GetProcAddress(MLib, "GetNumDevices");
  if (!HidUart_GetNumDevices){
        OutputDebugString("GetNumDevices not found at abracadabra.dll ");
        return 1;
  }
  //теперь можно работать
  HidUart_GetNumDevices();
 
  //если сильно память экономишь, потом можно выгрузить либу.
  FreeLibrary(MyLib);
  return 0;
}
2
3 / 3 / 0
Регистрация: 13.11.2014
Сообщений: 32
13.11.2014, 19:06  [ТС]
Цитата Сообщение от aLarman Посмотреть сообщение
быть может вот эту строку не надо? она же уже объявлена в каком то хедере
без ней тоже самое

Добавлено через 30 секунд
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Bvdvv,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
HMODULE MyLib=NULL;
typedef void (*Func_HidUart_GetNumDevices)();
Func_HidUart_GetNumDevices HidUart_GetNumDevices=NULL;
int main(){
  MyLib=LoadLibrary("abracadabra.dll");
    if (!MLib){
        OutputDebugString("library abracadabra.dll not found");
        return 1;
    }
  HidUart_GetNumDevices=(Func_HidUart_GetNumDevices)GetProcAddress(MLib, "GetNumDevices");
  if (!HidUart_GetNumDevices){
        OutputDebugString("GetNumDevices not found at abracadabra.dll ");
        return 1;
  }
  //теперь можно работать
  HidUart_GetNumDevices();
 
  //если сильно память экономишь, потом можно выгрузить либу.
  FreeLibrary(MyLib);
  return 0;
}
извините не знаю как это применить


В Qt если библиотеку выбирать как внешнюю со статистической компоновкой то выдаёт только такую ошибку

Code
1
No rule to make target 'C:/Qt/works/usart16/libSLABHIDtoUART.a', needed by 'debug\usart16.exe'.  Stop.
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
13.11.2014, 19:57
Цитата Сообщение от Bvdvv Посмотреть сообщение
В Qt если библиотеку выбирать как внешнюю со статистической компоновкой
А библиотека точно lib???
только её можно статически прилинковать
по ссылкам я нашел только описание на dll
а dllку подключить, не скомпоновать, а именно подключить, можно только во время исполнения программы
как показал Kuzia domovenok,
Цитата Сообщение от Bvdvv Посмотреть сообщение
извините не знаю как это применить
читай что такое "динамическое подключение"
когда нужна тебе библиотека подключаешь
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
MyLib=LoadLibrary("abracadabra.dll");
обычно в функции main (WinMain), когда не нужна отключаешь
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
FreeLibrary(MyLib);
0
3 / 3 / 0
Регистрация: 13.11.2014
Сообщений: 32
13.11.2014, 20:33  [ТС]
Цитата Сообщение от ValeryS Посмотреть сообщение
А библиотека точно lib???
только её можно статически прилинковать
по ссылкам я нашел только описание на dll
а dllку подключить, не скомпоновать, а именно подключить, можно только во время исполнения программы
как показал Kuzia domovenok,

читай что такое "динамическое подключение"
когда нужна тебе библиотека подключаешь
обычно в функции main (WinMain), когда не нужна отключаешь
извините, не тот апноут указал , вот это то что нужно https://www.silabs.com/Support... /AN433.pdf


да , точно lib , файл SLABHIDtoUART.lib

Так я так понял что если я хедеры включить в файл то могу функции от туда брать? Или я вообще ничего не понимаю? А хедеры уже сами ддлки подключат или SLABHIDtoUART.lib дллки подключит или нет?
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
13.11.2014, 20:39
Цитата Сообщение от Bvdvv Посмотреть сообщение
Так я так понял что если я хедеры включить в файл то могу функции от туда брать?
нет
там только описание а реализация в lib
Цитата Сообщение от Bvdvv Посмотреть сообщение
А хедеры уже сами ддлки подключат или SLABHIDtoUART.lib дллки подключит или нет?
ты путаешь статическую линковку, это когда код из библиотеки встраивается в твою программу
и динамическое подключение, когда во время выполнения программы в память подгружается ДЛЛка и взаимодействует с программой
0
3 / 3 / 0
Регистрация: 13.11.2014
Сообщений: 32
13.11.2014, 20:47  [ТС]
Цитата Сообщение от ValeryS Посмотреть сообщение
нет
там только описание а реализация в lib

ты путаешь статическую линковку, это когда код из библиотеки встраивается в твою программу
и динамическое подключение, когда во время выполнения программы в память подгружается ДЛЛка и взаимодействует с программой
как мне функциями из хидеров пользоваться, объясните пожалуйста, какое мне линкование нужно? я так понял из апноута 433 и 434 что мне нужно динамическое, тогда надо включить хедеры в код ?
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
13.11.2014, 20:51
Цитата Сообщение от Bvdvv Посмотреть сообщение
тогда надо включить хедеры в код ?
в любом случае надо, там описание функций, констант....
а динамическое подключение показал Kuzia domovenok,
для статической линковки lib нужно поключить к проекту, чтобы линкер смог вставить код
а у каждого компилятора, правильней сказать среды,это делается по своему
0
3 / 3 / 0
Регистрация: 13.11.2014
Сообщений: 32
14.11.2014, 09:45  [ТС]
Цитата Сообщение от ValeryS Посмотреть сообщение
в любом случае надо, там описание функций, констант....
а динамическое подключение показал Kuzia domovenok,
для статической линковки lib нужно поключить к проекту, чтобы линкер смог вставить код
а у каждого компилятора, правильней сказать среды,это делается по своему
всё равно не совсем понимаю что нужно сделать.

Если я использую динамическую линковку, то хедеры надо включать, так я так и делаю но получаю ошибки -expected initializer before. Это значит что функции надо где то про инецализировать? В хедере или в main файле?

И ещё вопрос, можно это всё как то проще описать на Си?
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
14.11.2014, 09:50
есть два типа библиотек
dll и lib
у тебя какой?
0
3 / 3 / 0
Регистрация: 13.11.2014
Сообщений: 32
14.11.2014, 09:54  [ТС]
Цитата Сообщение от ValeryS Посмотреть сообщение
есть два типа библиотек
dll и lib
у тебя какой?
и длл и либ, производитель даёт возможность и стат. линковку делать и динамическую, но как я понял из апноутов, статическая сложней, там уже надо самому чуть ли не драйввера писать. Поэтому думаю динамическая будет проще. Какой должен быть порядок действий в таком случае?
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
14.11.2014, 11:06
Цитата Сообщение от Bvdvv Посмотреть сообщение
Какой должен быть порядок действий в таком случае?
Тебе кузя уже написал
вот немного теории
http://www.codenet.ru/progr/visualc/Using-DLL.php
0
3 / 3 / 0
Регистрация: 13.11.2014
Сообщений: 32
14.11.2014, 11:06  [ТС]
читаю про динамическое линкование, динам. библиотеки. И возник вопрос, если дллка создана в Visual Studio, может быть так что у MinGW компилятора будут проблемы с этой ддлкой? или если есть хедеры не будет?
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
14.11.2014, 11:17
Цитата Сообщение от Bvdvv Посмотреть сообщение
И возник вопрос, если дллка создана в Visual Studio, может быть так что у MinGW компилятора будут проблемы с этой ддлкой?
Нет
Дллка это отдельная программа, как екзешник, с той разницей что разрешает внешним модулям пользовотся ей
т.е исполняемый код стандартизирован для ОС
в отличии от либ, которая представляет собой объектный модуль,который прилинковывается к программе
и внутреннее состояние модуля может, теоретически, отличатся от компилятора к компилятору
Правда я про такое не слышал

Добавлено через 1 минуту
Можно даже подключать дллки созданые на разных языках, например библиотека создана на С а подключаешь к шарпу
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.11.2014, 11: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 и...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru