Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.08.2011, 16:44   #1
FlySnake
 
Регистрация: 12.08.2011
Сообщений: 5
По умолчанию C: проблема с использованием сторонней библиотеки

Всем привет!
Помогите решить проблему. Нужно использовать стороннюю библиотеку 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
MSVC++ 2008 так:
Цитата:
Error C2059: синтаксическая ошибка
Вообще по идеи если код собирается Сишным компилятором, то extern "C" не нужно? Пробовал исправить в хидере на #define VSPE_API _declspec(dllimport) но тогда gcc выдаёт вот что:
Цитата:
warning: type defaults to 'int' in declaration of 'bool'|
warning: '__cdecl__' attribute only applies to function types|
error: expected ',' or ';' before 'vspe_activate'|
FlySnake вне форума Ответить с цитированием
Старый 12.08.2011, 18:28   #2
MooNDeaR
В стагнации
Участник клуба
 
Аватар для MooNDeaR
 
Регистрация: 29.07.2011
Сообщений: 1,303
По умолчанию

Код:
_declspec(dllimport)
Это ж примочка Visual Studio ?
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание.
MooNDeaR вне форума Ответить с цитированием
Старый 12.08.2011, 19:11   #3
FlySnake
 
Регистрация: 12.08.2011
Сообщений: 5
По умолчанию

Честно говоря не знал, но догадывался Поэтому специально попробовал в Visual Studio. Проблема остаётся: Error C2059: синтаксическая ошибка
FlySnake вне форума Ответить с цитированием
Старый 12.08.2011, 19:56   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Код:
#define VSPE_API extern "C" _declspec(dllexport)
А сколько там подчеркиваний у вас?
p51x вне форума Ответить с цитированием
Старый 12.08.2011, 21:50   #5
FlySnake
 
Регистрация: 12.08.2011
Сообщений: 5
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Код:
#define VSPE_API extern "C" _declspec(dllexport)
А сколько там подчеркиваний у вас?
Одно. Кстати, спасибо за подсказку, погуглил и оказывается должно быть два. Но это никак не изменило картины. Всё те же ошибки
FlySnake вне форума Ответить с цитированием
Старый 12.08.2011, 22:18   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Выложите код своего файла
p51x вне форума Ответить с цитированием
Старый 12.08.2011, 23:35   #7
FlySnake
 
Регистрация: 12.08.2011
Сообщений: 5
По умолчанию

Весь файл в сообщение не помещается, поэтому он в аттаче с изменённым расширением (не даёт загружать .c). Сейчас там только инклюд этого хидера и кучка быдлокода без попыток использования функций из библиотеки.
Вложения
Тип файла: txt main.txt (13.5 Кб, 135 просмотров)

Последний раз редактировалось FlySnake; 12.08.2011 в 23:38. Причина: забыл аттач
FlySnake вне форума Ответить с цитированием
Старый 15.08.2011, 13:04   #8
FlySnake
 
Регистрация: 12.08.2011
Сообщений: 5
По умолчанию

Проблема решена!
gcc ругался на тип bool, который объявлен в stdbool.h, а именно этот файл у меня небыл заинклюден. Для линковки с внешней библиотекой нужно добавить опцию -l<путь_к_либе.lib>, а __declspec и #pragma comment(lib,"VSPE_API.lib") вообще убрать т.к. gcc про эту фишку не знает, а линковка с внешней библиотекой указывается только опцией линкеру -l
FlySnake вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание односвязного линейного списка c использованием библиотеки STL. DimkO_Раздлбай Помощь студентам 0 09.05.2011 21:02
написание интерактивных приложений на python с использованием библиотеки pymunk Миха(ил) Python 1 08.12.2010 15:36
Обработка текста с мах использованием стандартной библиотеки С++ ИМЕЕТСЯ ИСХОДНИК! RomkaXXI Помощь студентам 0 13.05.2010 00:44
Метод Гаусса с использованием библиотеки STL Space1 Общие вопросы C/C++ 0 02.03.2010 12:38
Курсовые проекты на Visual С++ с использованием MFC библиотеки mixmon Фриланс 1 12.04.2009 18:38