Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> "Маленький" COM в Linux 
:(
    Опции темы
EnergoHokum
Дата 22.6.2007, 08:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 600
Регистрация: 10.11.2006
Где: Россия, Ставропол ь

Репутация: нет
Всего: 6



Подскажите, есть программа (моя) под винду, там реализуется что-то вроде урезанного COM-а. Хотел перенести его под Linux (там системозависимого кода почти нет), и при компиляции такого куска
Код

struct testIface// -- interface
{
    virtual void __stdcall FTI1(void)=0;
    virtual void __stdcall FTI2(void)=0;
    virtual unsigned long __stdcall AddRef(void)=0;
    virtual unsigned long __stdcall Release(void)=0;
    virtual unsigned long __stdcall QueryInterface(int ident,void** ppv)=0;
};

начинается непонятная ругань. Точно привести не могу, это дома осталось, но под виндой компилируется без вопросов. На винде - компилятор gcc 3.4.2, на линухе - 4.1.какой-то. В чём может быть проблем?
PM MAIL ICQ   Вверх
MAKCim
Дата 22.6.2007, 08:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



нет в GCC __stdcall, есть stdcall
пиши так
Код

__attribute__((stdcall))
virtual void FTI2(void) = 0;

а для лучшего переноса пользуйся препроцессором
Код

#if <windows>
    #define stdcall    __stdcall
#elif <linux>
    #define stdcall    __attribute__((stdcall))
#endif


Это сообщение отредактировал(а) MAKCim - 22.6.2007, 08:29


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
EnergoHokum
Дата 22.6.2007, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 600
Регистрация: 10.11.2006
Где: Россия, Ставропол ь

Репутация: нет
Всего: 6



Хм, а я grep-ом погонял по include-ам системным - там было __stdcall, хотя, может, переопределялось где, сегодня подробнее посмотрю. Спасибо за хелп!
PM MAIL ICQ   Вверх
bsa
Дата 22.6.2007, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 16
Всего: 196



Возможно, в gcc под Windows (mingw?) введен специальный макрос __stdcall, который переводится в __attribute__((stdcall)) не этапе обработки препроцессором.
PM   Вверх
DogStyle
Дата 19.7.2007, 08:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 18.7.2007

Репутация: нет
Всего: нет



MAKCim,  smile 
Добавиь нечего.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0512 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.