crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> искажения имён функций в LIB-файлах, и как с ними жить.
Litkevich Yuriy
  опции профиля:
сообщение 30.12.2010, 22:20
Сообщение #1


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Возникла проблема с линковкой чужой dll-ки (точнее lib-файла) к своему приложению написанному на Qt/MinGW32.

получаю сообщения об ошибке:
tmp/debug/mainwindow.o: In function `ZN10Mainwindow5startEv':
L:/Repository/EDATools/P-CAD_interface/DBXSamp4Port2Qt4/src/mainwindow.cpp:33: undefined reference to `_Z11TOpenDesignllPKcP10DbxContext@16'
L:/Repository/EDATools/P-CAD_interface/DBXSamp4Port2Qt4/src/mainwindow.cpp:45: undefined reference to `_Z12TGetFirstNetP10DbxContextP4TNet@8'
L:/Repository/EDATools/P-CAD_interface/DBXSamp4Port2Qt4/src/mainwindow.cpp:50: undefined reference to `_Z11TGetNextNetP10DbxContextP4TNet@8'
L:/Repository/EDATools/P-CAD_interface/DBXSamp4Port2Qt4/src/mainwindow.cpp:59: undefined reference to `_Z12TCloseDesignP10DbxContextPKc@8'
tmp/debug/mainwindow.o: In function `ZN10Mainwindow4exitEv':
L:/Repository/EDATools/P-CAD_interface/DBXSamp4Port2Qt4/src/mainwindow.cpp:68: undefined reference to `_Z12TCloseDesignP10DbxContextPKc@8'
collect2: ld returned 1 exit status
MinGW пытается искать искажённые имена. А Dll-ка выглядит так:
Прикрепленное изображение

DLL-ка создана студийным компиллером, неизвестной версии. Бибилотека, как указано в её описании, пригодна для компиляции как Си так и Си++ компиляторами, без привязки к конкретному производителю компилятора.

Однако, в случае с плагином Qt, для поддержки СУБД Firebird, такой проблемы нет. Хотя тамошние lib и dll тоже студийные и тоже не имеют искажений имён.

В чём может быть проблема?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 31.12.2010, 11:53
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Не помогло. теперь вывод такой:
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-s -mthreads -Wl -Wl,-subsystem,windows -o dbxsamp4qt.exe tmp/release/mainwindow.o tmp/release/main.o tmp/release/moc_mainwindow.o  -L"h:\Qt\4.5.3_std\lib" -lmingw32 -lqtmain L:/Repository/EDATools/P-CAD_interface/DBXSamp4Port2Qt4/src/../Common/Dbx32.a -lQtGui4 -lQtCore4
tmp/release/mainwindow.o:mainwindow.cpp:(.text+0x2fa): undefined reference to `_Z12TCloseDesignP10DbxContextPKc@8'
tmp/release/mainwindow.o:mainwindow.cpp:(.text+0x4a3): undefined reference to `_Z11TOpenDesignllPKcP10DbxContext@16'
tmp/release/mainwindow.o:mainwindow.cpp:(.text+0x61d): undefined reference to `_Z12TGetFirstNetP10DbxContextP4TNet@8'
tmp/release/mainwindow.o:mainwindow.cpp:(.text+0x6ef): undefined reference to `_Z11TGetNextNetP10DbxContextP4TNet@8'
tmp/release/mainwindow.o:mainwindow.cpp:(.text+0xa44): undefined reference to `_Z12TCloseDesignP10DbxContextPKc@8'
collect2: ld returned 1 exit status


Делал так:
reimp -d Dbx32.lib
получил def-файл
dlltool --dllname Dbx32.dll --def Dbx32.def --output-lib Dbx32.a -k
получил a-файл. (пробовал и без ключа -k)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- Litkevich Yuriy   искажения имён функций в LIB-файлах, и как с ними жить.   30.12.2010, 22:20
- - igor_bogomolov   В чём может быть проблема не знаю, просто в качест...   31.12.2010, 0:57
- - Litkevich Yuriy   Не помогло. теперь вывод такой: g++ -enable-stdcal...   31.12.2010, 11:53
- - DEADHUNT   h файл посмотри, может он для C предназначен, доба...   31.12.2010, 15:28
- - Litkevich Yuriy   DEADHUNT, Хм-м-м. Сделал так: extern "C" {...   31.12.2010, 16:36
- - Iron Bug   это называется декорирование имён (decoration) либ...   1.1.2011, 15:42
- - Litkevich Yuriy   я пока врукопашную разрешаю имена функций. Времени...   1.1.2011, 16:14
|- - Danila_Bagrofff   Цитата(Litkevich Yuriy @ 1.1.2011, 17:14)...   11.7.2011, 13:03
- - Litkevich Yuriy   Цитата(Danila_Bagrofff @ 11.7.2011, 16:03...   11.7.2011, 13:15
|- - Danila_Bagrofff   Нашел интересную инфу: http://forums.codeblocks.or...   11.7.2011, 13:28
|- - Danila_Bagrofff   такое ощущение, что не находится данная функция в ...   11.7.2011, 17:23
- - Litkevich Yuriy   проделал этот же трюк, получил ошибку: Цитатаtmp/r...   11.7.2011, 16:53
- - Litkevich Yuriy   Цитата(Danila_Bagrofff @ 11.7.2011, 20:23...   11.7.2011, 17:59
- - Iron Bug   Цитата(Danila_Bagrofff @ 11.7.2011, 16:28...   11.7.2011, 18:00
- - Litkevich Yuriy   к стати, из твоей же ссылки, чувак пишет что измен...   11.7.2011, 18:01
- - Danila_Bagrofff   - проблема вызова функции (это фактически API для ...   12.7.2011, 9:01
- - Litkevich Yuriy   я a-файл вообще не делал.   12.7.2011, 9:25
- - Danila_Bagrofff   Litkevich Yuriy, а если попробовать все-таки прео...   12.7.2011, 10:39
- - Iron Bug   Цитата(Litkevich Yuriy @ 11.7.2011, 20:01...   12.7.2011, 14:11


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.4.2024, 17:03