Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
FlySnake
2 / 2 / 0
Регистрация: 14.08.2011
Сообщений: 5
#1

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

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

Всем привет!
Помогите решить проблему. Нужно использовать стороннюю библиотеку VSPE API (эмулятор COM-порта). Свою софтину пишу на Си. В комплекте с самой либой есть хидер VSPE_API.h. Делаю точно как написано в примере использования этой либы http://www.eterlogic.com/help/vspe/VSPE_API_Cpp_Page.html
В своём коде:
Код
#include "VSPE_API.h"
#pragma comment(lib,"VSPE_API.lib")
Кусок содержимого VSPE_API.h :
Код
#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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.08.2011, 22:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос C: проблема с использованием сторонней библиотеки (C++):

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

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

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

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

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

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

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

Цитата Сообщение от easybudda Посмотреть сообщение
gcc такого не знает. Параметром компиляции задавайте
Код
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
easybudda
Модератор
Эксперт CЭксперт С++
9716 / 5667 / 971
Регистрация: 25.07.2009
Сообщений: 10,910
14.08.2011, 23:27 #5
Цитата Сообщение от FlySnake Посмотреть сообщение
Кстати, выснилось на что именно он ругается: на тип bool.
C
1
#include <stdbool.h>
Цитата Сообщение от FlySnake Посмотреть сообщение
Но у меня статическая библиотека VSPE_API.lib, а не dll
Ну тем не менее файл dll есть? Попробуйте его в windows/system32/ скопировать...
1
FlySnake
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
easybudda
Модератор
Эксперт CЭксперт С++
9716 / 5667 / 971
Регистрация: 25.07.2009
Сообщений: 10,910
15.08.2011, 14:21 #7
Цитата Сообщение от FlySnake Посмотреть сообщение
И действительно в инклюдах VS его нет
stdbool.h был добавлен в стандарте ANSI C99, мелкомягкие этот стандарт так и не удосужились поддерживать, нет в мелкостудии такого файла.
0
15.08.2011, 14:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.08.2011, 14:21
Привет! Вот еще темы с ответами:

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

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

Загрузка библиотеки и использованием ее функций - C++
Добрый день уважаемые форумчане. Как всегда не нашел подходящего раздела, поэтому пишу тут. Есть turbo c++ версии 3.0. и есть...

Калькулятор с использованием библиотеки map - C++
Нужно написать калькулятор с использованием библиотеки map и указателем на функцию void plusx( double a, double b) { cout &lt;&lt;...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.