Компиляция поддержки InterBase в Qt - PullRequest
0 голосов
/ 07 ноября 2011

Я следовал инструкциям на http://doc.qt.nokia.com/stable/sql-driver.html#qibase для компиляции поддержки Interbase в Qt и убедился, что все мои библиотеки находятся в нужном месте.qmake работает успешно, но когда я запускаю nmake, я получаю серию неопределенных ошибок ссылок в qsql_ibase.cpp.Если я открою .pro в Qt Creator и наведу курсор мыши на одну из функций, которая генерирует неопределенные ссылочные ошибки, и последую за символом (F2), он приведет меня к файлу ibase.h, где он объявлен.Выдает неопределенные ссылочные ошибки, потому что нет определения функции?Если это так, то почему он не выдаёт мне ошибки об отсутствующей библиотеке?

Пример вывода:

Создание файла библиотеки: debug \ libqsqlibased4.a debug / qsql_ibase.o: В функции getIBaseError': C:\QtSDK\QtSources\4.7.4\src\plugins\sqldrivers\ibase/../../../sql/drivers/ibase /qsql_ibase.cpp:80: undefined reference to isc_sqlcode 'C: \ QtSDK \ QtSources \ 4.7.4 \ src \ plugins \ sqldrivers \ ibase /../../../ sql / drivers / ibase /qsql_ibase.cpp:85:неопределенная ссылка на isc_interprete' debug/qsql_ibase.o:C:\QtSDK\QtSources\4.7.4\src\plugins\sqldrivers\ibase/../../. ./sql/drivers/ibase/qsql_ibase.cpp:406: undefined reference to isc_dsql_free_st atement 'debug / qsql_ibase.o: C: \ QtSDK \ QtSources \ 4.7.4 \ src \ plugins \ sqldrivers \ ibase /../../../sql/drivers/ibase/qsql_ibase.cpp:421: неопределенная ссылка на isc_create_blob2 ' debug/qsql_ibase.o:C:\QtSDK\QtSources\4.7.4\src\plugins\sqldrivers\ibase/../../. ./sql/drivers/ibase/qsql_ibase.cpp:427: undefined reference to isc_put_segment '

Это продолжается для многих других ошибок, все неопределенные ссылки.

Ответы [ 2 ]

0 голосов
/ 14 марта 2013

Извините за поднятие столь старой темы, но я нашел решение и хочу поделиться с ним.Проблема в том, что макрос ISC_EXPORT не был определен в SDK Interbase из-за условной компиляции.Подробности здесь - Как собрать плагин Interbase для Qt от MinGW

0 голосов
/ 07 ноября 2011

Это действительно звучит как первая проблема, упомянутая в разделе «Устранение неполадок» на странице, на которую вы ссылаетесь выше:

Вы всегда должны использовать клиентские библиотеки, которые былискомпилирован с тем же компилятором, который вы используете для своего проекта.Если вы не можете получить исходный текст для самостоятельной компиляции клиентских библиотек, вы должны убедиться, что предварительно скомпилированная библиотека совместима с вашим компилятором, в противном случае вы получите много ошибок «неопределенных символов».Некоторые компиляторы имеют инструменты для преобразования библиотек, например, Borland поставляет инструмент COFF2OMF.EXE для преобразования библиотек, сгенерированных с помощью Microsoft Visual C ++.

Какой компилятор вы используете для компиляции Qt и где вы использовалиполучить библиотеки Interbase?Вы также должны убедиться, что эти библиотеки могут быть найдены во время ссылки.Если вы посмотрите на вывод вашего компилятора, он должен показать вам все каталоги ссылок, в которых он ищет (в дополнение к глобально определенным, например, PATH в Windows). Если в списке есть папка с вашей библиотекой Interbase, то, вероятно,что версии компилятора не совпадают.

...