Форум программистов, компьютерный форум CyberForum.ru

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

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

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

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

Всем привет!
Помогите решить проблему. Нужно использовать стороннюю библиотеку VSPE API (эмулятор COM-порта). Свою софтину пишу на Си. В комплекте с самой либой есть хидер VSPE_API.h. Делаю точно как написано в примере использования этой либы http://www.eterlogic.com/help/vspe/V..._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: синтаксическая ошибка
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.08.2011, 22:01     C: проблема с использованием сторонней библиотеки
Посмотрите здесь:
C++ Подключение сторонней библиотеки
C++ Подключение сторонней библиотеки
Использование функций сторонней библиотеки C++
Подключение сторонней библиотеки OpenCV в VS 2013 C++
Использование функций сторонней библиотеки из c++ dll C++
Подключение сторонней библиотеки gmp C++ через MinGW C++
Подключение сторонней библиотеки - как указать путь к .dll файлам C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
talis
791 / 543 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
14.08.2011, 22:03     C: проблема с использованием сторонней библиотеки #2
А в какой строке конкретно ругается?
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
14.08.2011, 22:15     C: проблема с использованием сторонней библиотеки #3
Цитата Сообщение от FlySnake Посмотреть сообщение
#pragma comment(lib,"VSPE_API.lib")
gcc такого не знает. Параметром компиляции задавайте
Код
gcc -o program program.c -lvspe_api
или как-то так...
FlySnake
2 / 2 / 0
Регистрация: 14.08.2011
Сообщений: 5
14.08.2011, 23:09  [ТС]     C: проблема с использованием сторонней библиотеки #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
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
14.08.2011, 23:27     C: проблема с использованием сторонней библиотеки #5
Цитата Сообщение от FlySnake Посмотреть сообщение
Кстати, выснилось на что именно он ругается: на тип bool.
C
1
#include <stdbool.h>
Цитата Сообщение от FlySnake Посмотреть сообщение
Но у меня статическая библиотека VSPE_API.lib, а не dll
Ну тем не менее файл dll есть? Попробуйте его в windows/system32/ скопировать...
FlySnake
2 / 2 / 0
Регистрация: 14.08.2011
Сообщений: 5
15.08.2011, 12:57  [ТС]     C: проблема с использованием сторонней библиотеки #6
Цитата Сообщение от easybudda Посмотреть сообщение
C
1
#include <stdbool.h>
Спасибо! Похоже именно этого не хватало. Проблема решена. Для gcc достаточно было добавить этот инклюд, убрать VSPE_API из объявления функций (т.к. ему неизвестно про __declspec) и добавить опцию линкеру -l<путь_к_либе.lib>
А вот в VS так просто не отделаешься. Говорит что файл stdbool.h не найден. И действительно в инклюдах VS его нет, а подкидывать его из mingw наверное не правильно. В принципе оно и не нужно т.к. я VS не пользуюсь, но на будущее знать хотелось бы.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.08.2011, 14:21     C: проблема с использованием сторонней библиотеки
Еще ссылки по теме:
проблема с установкой библиотеки. C++
C++ Калькулятор с использованием библиотеки map
Загрузка библиотеки и использованием ее функций C++
C++ создание класса с использованием библиотеки String
Реализовать программу с использованием библиотеки GGI. C++

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

Или воспользуйтесь поиском по форуму:
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
15.08.2011, 14:21     C: проблема с использованием сторонней библиотеки #7
Цитата Сообщение от FlySnake Посмотреть сообщение
И действительно в инклюдах VS его нет
stdbool.h был добавлен в стандарте ANSI C99, мелкомягкие этот стандарт так и не удосужились поддерживать, нет в мелкостудии такого файла.
Yandex
Объявления
15.08.2011, 14:21     C: проблема с использованием сторонней библиотеки
Ответ Создать тему
Опции темы

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