Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
2 / 2 / 0
Регистрация: 14.08.2011
Сообщений: 5
1

C: проблема с использованием сторонней библиотеки

14.08.2011, 22:01. Показов 2528. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет!
Помогите решить проблему. Нужно использовать стороннюю библиотеку VSPE API (эмулятор COM-порта). Свою софтину пишу на Си. В комплекте с самой либой есть хидер VSPE_API.h. Делаю точно как написано в примере использования этой либы http://www.eterlogic.com/help/... _Page.html
В своём коде:
Code
1
2
#include "VSPE_API.h"
#pragma comment(lib,"VSPE_API.lib")
Кусок содержимого VSPE_API.h :
Code
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
#ifndef _VSPE_API_H_
#define _VSPE_API_H_
 
#ifdef VSPE_API_EXPORTS
#define VSPE_API extern "C" __declspec(dllexport)
#else
#define VSPE_API extern "C" __declspec(dllimport)
#endif
 
 
/*
* Activate VSPE API using activation key
* \return result
*/
VSPE_API bool __cdecl vspe_activate(const char* key);
 
/*
 * Initialize VSPE core
 * \return result
 */
VSPE_API bool __cdecl vspe_initialize();
 
/*
 * Load configuration file
 * \param name
 * \return result
 */
VSPE_API bool __cdecl vspe_loadConfiguration(const char* name);
Проблема в том, что при сборке компилятор ругается на объявление всех функций в хидере.
gcc (mingw) ругается так:
expected identifier or '(' before string constant
MS Visual Studio 2008 так:
Error C2059: синтаксическая ошибка
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.08.2011, 22:01
Ответы с готовыми решениями:

Подключение сторонней библиотеки
Всем добрый день! Подскажите, пожалуйста, как можно подключить C библиотеку .so к файлам C++? Собираю все средствами gcc, Unix-like OS. ...

Подключение сторонней библиотеки
Пытаюсь подключить стороннюю библиотеку и ввести код, который представлен в описании: #include <bprinter/table_printer.h> ...

Использование функций сторонней библиотеки
Здравствуйте. Пишу консольное приложение для Linux. В программе нужно использовать стороннюю библиотеку. Я её скачал, собрал, подключил в...

6
 Аватар для talis
794 / 546 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
14.08.2011, 22:03 2
А в какой строке конкретно ругается?
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12837 / 7573 / 1765
Регистрация: 25.07.2009
Сообщений: 13,970
14.08.2011, 22:15 3
Цитата Сообщение от FlySnake Посмотреть сообщение
#pragma comment(lib,"VSPE_API.lib")
gcc такого не знает. Параметром компиляции задавайте
Code
1
gcc -o program program.c -lvspe_api
или как-то так...
0
2 / 2 / 0
Регистрация: 14.08.2011
Сообщений: 5
14.08.2011, 23:09  [ТС] 4
Цитата Сообщение от talis Посмотреть сообщение
А в какой строке конкретно ругается?
Во всех где объявлены фунции из этой либы в хидере.

Цитата Сообщение от easybudda Посмотреть сообщение
gcc такого не знает. Параметром компиляции задавайте
Code
1
gcc -o program program.c -lvspe_api
или как-то так...
Да, тут я тормознул немного, он даже ворнигом на это ругается и__declspec(dllimport) тоже фича VS. Пробовал так. Кстати, выснилось на что именно он ругается: на тип bool. Он вроде как из C++, а в C его нет, но есть typedef int BOOL. Заменил bool на BOOL
VSPE_API BOOL __cdecl vspe_activate(const char* key);
и добавил линкеру полный путь к библиотеке. Собирается, но при запуске ругается "приложению не удалось запуститься потому что VSPE_API.dll не был найден". Но у меня статическая библиотека VSPE_API.lib, а не dll
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12837 / 7573 / 1765
Регистрация: 25.07.2009
Сообщений: 13,970
14.08.2011, 23:27 5
Цитата Сообщение от FlySnake Посмотреть сообщение
Кстати, выснилось на что именно он ругается: на тип bool.
C
1
#include <stdbool.h>
Цитата Сообщение от FlySnake Посмотреть сообщение
Но у меня статическая библиотека VSPE_API.lib, а не dll
Ну тем не менее файл dll есть? Попробуйте его в windows/system32/ скопировать...
1
2 / 2 / 0
Регистрация: 14.08.2011
Сообщений: 5
15.08.2011, 12:57  [ТС] 6
Цитата Сообщение от easybudda Посмотреть сообщение
C
1
#include <stdbool.h>
Спасибо! Похоже именно этого не хватало. Проблема решена. Для gcc достаточно было добавить этот инклюд, убрать VSPE_API из объявления функций (т.к. ему неизвестно про __declspec) и добавить опцию линкеру -l<путь_к_либе.lib>
А вот в VS так просто не отделаешься. Говорит что файл stdbool.h не найден. И действительно в инклюдах VS его нет, а подкидывать его из mingw наверное не правильно. В принципе оно и не нужно т.к. я VS не пользуюсь, но на будущее знать хотелось бы.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12837 / 7573 / 1765
Регистрация: 25.07.2009
Сообщений: 13,970
15.08.2011, 14:21 7
Цитата Сообщение от FlySnake Посмотреть сообщение
И действительно в инклюдах VS его нет
stdbool.h был добавлен в стандарте ANSI C99, мелкомягкие этот стандарт так и не удосужились поддерживать, нет в мелкостудии такого файла.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.08.2011, 14:21
Помогаю со студенческими работами здесь

Подключение сторонней библиотеки OpenCV в VS 2013
Помогите пожалуйста как разрешить конфликт подключенных файлов и стандартных библиотек сделал примерно как здесь, но в настройках...

Использование функций сторонней библиотеки из c++ dll
Какой аналог кода (C#): public static extern int Last(string instrument, double price, int size); для C++ библиотеки (dll)....

Подключение сторонней библиотеки gmp C++ через MinGW
Скачивал MinGW,там выставлял установку пакета GMP, после чего писал вот такой код: #include &lt;cstddef&gt; #include...

Подключение сторонней библиотеки - как указать путь к .dll файлам
Не могу разобраться как указать путь к .dll файлам пробовал следующее: прописывать в свойствах проекта во вкладке &quot;каталоги...

проблема с установкой библиотеки.
Добрый день, у меня возникла проблема с установкой библиотеки EasyBMP. я скопировал все файлы данной библиотеки в директорию где находятся...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Что нового в C# 14
UnmanagedCoder 10.03.2025
Предстоящая версия C# 14 обещает принести изменения, которые сделают разработку еще более приятной и эффективной. Что стоит отметить, так это влияние сообщества разработчиков на формирование новых. . .
Формулы поворота
Igor3D 10.03.2025
Добрый день Тема Эти формулы приводятся во множестве тьюториалов, часто под видом "матрица вращения на плоскости". x' = x * cos(a) - y * sin(a) y' = y * cos(a) + x * sin(a) Как бы Вы их. . .
Что нового в .NET 10
UnmanagedCoder 10.03.2025
. NET 10 выходит как релиз с длительной поддержкой (LTS), включающей три года обновлений. В этом обновлении Microsoft сфокусировались на нескольких направлениях: производительность, оптимизация. . .
Отложенное высвобождение, RCU и Hazard Pointer в C++26
NullReferenced 09.03.2025
Многопоточное программирование стало важной частью современной разработки. Когда несколько потоков одновременно работают с общими данными, возникает целый ряд проблем, связанных с синхронизацией и. . .
Неблокирующийся стек на C++26
NullReferenced 09.03.2025
Традиционные способы синхронизации в многопоточном программировании — мьютексы, семафоры, условные переменные — часто превращаются в узкое место в плане производительности. При этом неблокирующиеся. . .
Обработка строк в C++26: Новые возможности string и string_view
NullReferenced 09.03.2025
Новый стандарт C++26 предлагает много улучшений для работы с привычными string и относительно новыми string_view. string_view - это невладеющая ссылка на последовательность символов, появившаяся в. . .
Мой первый аддон для Blender 3D, с помощью нейронки (не зная даже азов пайтона, но это не значит что так и с остальным).
Hrethgir 09.03.2025
Потратил весь день. Пол-дня мне хватило, чтобы понять что с версией с 14B мне не одолеть написание функционального кода, на языке с которым я вообще никак не знаком - пайтон. Версия 22B от другого. . .
Einstein@Home сегодня исполняется двадцать лет!
Programma_Boinc 09.03.2025
Einstein@Home сегодня исполняется двадцать лет! Отправлено 19 февраля 2025 года в 17:20:21 UTC Я хочу поздравить всех наших волонтеров, разработчиков и ученых из Einstein@Home. Мы официально. . .
Заполнители и расширенный набор символов в C++26
NullReferenced 09.03.2025
C++26 представляет два важных обновления: заполнители и расширенный набор символов. Заполнители (placeholders) решают давнюю проблему лаконичности кода в шаблонных выражениях и лямбда-функциях. Они. . .
Контракты в C++26
NullReferenced 09.03.2025
Контракты – это механизм, позволяющий указывать предусловия, постусловия и инварианты для функций в коде. Эта функциональность должна была стать частью C++20, но была исключена на встрече комитета. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru