![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: нет Всего: 51 |
Дано:
есть исходник udf-ки для Firebird на Си есть .def файл в котором перечислены экспортируемые функции. есть Windows компьютер на котором установлены cygwin и mingw Необходимо: Скомпилировать этот исходник в .dll-ку, (UDF для Firebird-a) Скомпилировать этот исходник в .so, (UDF для Firebird-a, в версии для *nix) Известно: Что этот исходник рабочий. Что из него когда-то делали и so и dll. Помогите пожалуйста разобраться с последовательностью действий. С gcc столкнулся впервые. Пробовал собрать по примеру из хелпа к dlltool: gcc -c dll.c dlltool -e exports.o -l dll.lib dll.o gcc dll.o exports.o -o dll.dll Процесс падает на последней строчке с сообщением о том, что exports.o не найден. |
|||
|
||||
| Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: нет Всего: 51 |
И кстати, если первую строку выполнить так(без ключа -с):
gcc dll.c то gcc выводит ошибку: fwudf.o:fwudf.c:(.text+0xbf2): undefined reference to `_isc_decode_date' (таких строчек несколько) fwudf.o:fwudf.c:(.text+0x153f): more undefined references to `_isc_decode_date' follow /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../libcygwin.a(libcmain.o):(.text+0xab): undefined reference to `_WinMain@16' collect2: ld returned 1 exit status |
|||
|
||||
| Bose |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: нет Всего: 51 |
Эта проблема проявляется при компиляции с помощью MinGW. exports.o почему-то не создаётся. В CygWin же вторая команда проходит, нормально. exports.o вроде создаётся. Процесс тормозится на третьей команде gcc dll.o exports.o -o dll.dll с сообщением об
isc_decode_date упоминается в файле ibase.h. А dll.c выглядит примерно так:
Добавлено через 4 минуты и 28 секунд Я так подозреваю, что для того, чтобы всё собралось, нужно либо что-то ещё прилинковать, либо указать какой-то ключ в командной строке, но не знаю что именно. Хееелп! |
||||
|
|||||
| Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: нет Всего: 51 |
Кстати, использование MinGW или CygWin не является требованием. Хотя конечно, мне не очень хочется устанавливать себе Visual Studio.
|
|||
|
||||
| Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: нет Всего: 51 |
DLL получилось собрать, установив lcc, и указав в настройках linker-a дополнительный файл fbclient_ms.lib. Работоспособность пока не тестировал.
Меня терзают смутные сомнения, что можно так вот запросто прилинковать либу от Ms C к коду скомпилированному в lcc, и всё после этого будет работать стабильно. Господа гуру, покомментируйте пожалуйста эту ветку. А то я что-то делаю, но сам толком не понимаю что это значит. Спасибо. |
|||
|
||||
| Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: нет Всего: 51 |
up
|
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
||||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Bose, вообще-то, сишные либы можно линковать к любым проектам под той же архитектурой. Это особенность Си. В Си++ этого нет - необходимо, чтобы компиляторы совпадали (даже версии).
А то, что у тебя скомпилировалось с помощью icc не удивительно - ты же подсунул недостающую либу. Если бы ты тоже самое под mingw сделал, то тоже бы не было ошибок. Вот только данная тема отношения к си не имеет. |
|||
|
||||
| Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: нет Всего: 51 |
Я смотрел тот топик - там не используются функции isc_decode_date, и соответственно не возникает нужды линковаться к fbclient_xx.lib. Насчёт раздела, на мой взгляд, вопрос в большей степени относится к Си(не к языку, а к инструментарию), чем к Firebird-у. А что такое архитектура? OS? битность(32/64)? тип процессора(Intel/Celeron)? Добавлено через 45 секунд а в остальном, bsa, спасибо. |
|||
|
||||
| Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: нет Всего: 51 |
не тема, а футбольный мячик какой-то.
Решение под винду найдено. Ответили тут: http://www.sql.ru/forum/actualthread.aspx?tid=649279#6970952 |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |