Поиск:

Ответ в темуСоздание новой темы Создание опроса
> прикрутить объектный файл к проекту 
:(
    Опции темы
_hunter
  Дата 14.7.2006, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



Добрый день.

Подскажите, можно ли объектный файл (собрвнный gcc в MinGW .o) каким-то образом прикрутить к проекту так, чтобы можно было использовать его функции (передаваемые/принимаемые параметры я знаю)?

С уважением... 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Daevaorn
Дата 14.7.2006, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



_hunter,
В чем проблема то?
Написать заголовочный файл(если нет) и прилиноковать это объектный файл 
PM MAIL WWW   Вверх
_hunter
Дата 14.7.2006, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



проблема, например, в стадии "прилинковать" -- это как/что делать? 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Daevaorn
Дата 14.7.2006, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Добавить в список объектных файлов в командной строке/мейкфайле и собрать приложение. Или я чего-то не понимаю в вопросе? 
PM MAIL WWW   Вверх
_hunter
Дата 14.7.2006, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



я в студии (IDE) работаю... 
приписал в опция компилятора ffmpeg.o -- сказал "unknown character '0x1'" и так далее...
 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Daevaorn
Дата 14.7.2006, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



_hunter, хм...
Если там только функции тогда так:
1. они должны быть скомпилированы в объектный файл как функции на языке С (extern "C"{/*...*/})
2. полученный объектный файл переименовываешь в ffmpeg.obj
3. добавляешь к проекту этот файл (либо в свойствах линкера, либо просто как файл в Solution Explorer )
 
PM MAIL WWW   Вверх
bsa
Дата 14.7.2006, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



А разве gcc делает объектные файлы совместимые с MSVC? 
PM   Вверх
Daevaorn
Дата 14.7.2006, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(bsa @  14.7.2006,  22:07 Найти цитируемый пост)
А разве gcc делает объектные файлы совместимые с MSVC?  

Mingw - да. но совместимость вроде частичная - только С. 
PM MAIL WWW   Вверх
_hunter
Дата 17.7.2006, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



Daevaorn, если где-нить в коде не прописать extern "C" int Test(); получаю ошибку "Test': identifier not found, even with argument-dependent lookup", а если прописать -- при вызове Test получаю "Unhandled exception at 0x00000000 in Client.exe: 0xC0000005: Access violation reading location 0x00000000."
 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
slava72
Дата 17.7.2006, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Общие вопросы к скрещивапнию раздельно компилируемых библиотек под разную фигню

1. Все используемые совметно функи (и только они) должны быть объявлены в блоке
extern "C" { ...}

2. Не стоит иметь глобальных переменных

3. Инициализируемых глобальных данных (даже с внутреннем связыванием - быть не должно ) - как вариант решается что-то типа:

Код

extern "C" int* [namespace::]GetLastError() {
  static error = 0;
  return &error;
}


4. Во внешнем интерфейсе использовать только POD данные, оптимальный вариант void*,
т.к. проблемы могут возникать в т.ч. из-за aligment-a

т.е. внешний интерфейс построен на а-ля хандлах (указателях на реальные объеты).

4.1 Если требуються структуры (для передачи параметров)- юзать #pragma pack [с условной компиляцией]
и возмжно юзать типы типа ;)) int16? int32 etc...

4.2 Возможно отдельный трабл - динамическое управление памятью - тогда пишешь
для своих клааосв примесь, которая определяет операции new/delete нужных разновидностей, в терминах ::alloc/::malloc, а для std::* пишешь свой аллокатор под ту же фигню

P.S. это чисто теоретические рассуждения, но думаю истины в них не менне 1%  smile 
 
PM MAIL   Вверх
slava72
Дата 17.7.2006, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



с учетом вышесказанного (также как и оно - глубокое ИМХО) - код долже быть разбит на 3 части:

1. Чисто сишный интерфейс доступа (с учетом вырвнивания, etc) 

2. чисто сишный интерфейс доступа к стандартным библиотекам:

printf, malloc, etс...


3. собственно библиотека - реализует п.1 и использует _только_ п.2


 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | GNU toolchain | Следующая тема »


 




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


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

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