| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Как из файлов .c и .def получить (udf).dll |
| Автор: Bose 20.3.2009, 18:59 |
| Дано: есть исходник udf-ки для Firebird на Си есть .def файл в котором перечислены экспортируемые функции. есть Windows компьютер на котором установлены cygwin и mingw Необходимо: Скомпилировать этот исходник в .dll-ку, (UDF для Firebird-a) Скомпилировать этот исходник в .so, (UDF для Firebird-a, в версии для *nix) Известно: Что этот исходник рабочий. Что из него когда-то делали и so и dll. Помогите пожалуйста разобраться с последовательностью действий. С gcc столкнулся впервые. Пробовал собрать по примеру http://sourceware.org/binutils/docs-2.16/binutils/dlltool.html#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 20.3.2009, 19:39 |
| И кстати, если первую строку выполнить так(без ключа -с): 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 20.3.2009, 21:21 |
| Кстати, использование MinGW или CygWin не является требованием. Хотя конечно, мне не очень хочется устанавливать себе Visual Studio. |
| Автор: Bose 22.3.2009, 18:55 |
| DLL получилось собрать, установив lcc, и указав в настройках linker-a дополнительный файл fbclient_ms.lib. Работоспособность пока не тестировал. Меня терзают смутные сомнения, что можно так вот запросто прилинковать либу от Ms C к коду скомпилированному в lcc, и всё после этого будет работать стабильно. Господа гуру, покомментируйте пожалуйста эту ветку. А то я что-то делаю, но сам толком не понимаю что это значит. Спасибо. |
| Автор: Bose 24.3.2009, 13:27 |
| up |
| Автор: zim22 24.3.2009, 13:57 |
| Bose, вы не там где надо тему создали. http://forum.vingrad.ru/forum/topic-203039/anchor-entry/0.html#entry |
| Автор: bsa 24.3.2009, 14:51 |
| Bose, вообще-то, сишные либы можно линковать к любым проектам под той же архитектурой. Это особенность Си. В Си++ этого нет - необходимо, чтобы компиляторы совпадали (даже версии). А то, что у тебя скомпилировалось с помощью icc не удивительно - ты же подсунул недостающую либу. Если бы ты тоже самое под mingw сделал, то тоже бы не было ошибок. Вот только данная тема отношения к си не имеет. |
| Автор: Bose 24.3.2009, 15:13 | ||||
Я смотрел тот топик - там не используются функции isc_decode_date, и соответственно не возникает нужды линковаться к fbclient_xx.lib. Насчёт раздела, на мой взгляд, вопрос в большей степени относится к Си(не к языку, а к инструментарию), чем к Firebird-у.
А что такое архитектура? OS? битность(32/64)? тип процессора(Intel/Celeron)? Добавлено через 45 секунд а в остальном, bsa, спасибо. |
| Автор: Bose 26.3.2009, 01:28 |
| не тема, а футбольный мячик какой-то. Решение под винду найдено. Ответили тут: http://www.sql.ru/forum/actualthread.aspx?tid=649279#6970952 |