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

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

13.11.2014, 16:00. Показов 12638. Ответов 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
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
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,531
Записей в блоге: 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
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
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
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
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
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
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
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
14.11.2014, 09:50
есть два типа библиотек
dll и lib
у тебя какой?
0
3 / 3 / 0
Регистрация: 13.11.2014
Сообщений: 32
14.11.2014, 09:54  [ТС]
Цитата Сообщение от ValeryS Посмотреть сообщение
есть два типа библиотек
dll и lib
у тебя какой?
и длл и либ, производитель даёт возможность и стат. линковку делать и динамическую, но как я понял из апноутов, статическая сложней, там уже надо самому чуть ли не драйввера писать. Поэтому думаю динамическая будет проще. Какой должен быть порядок действий в таком случае?
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
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
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
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
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
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 . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru