![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Litkevich Yuriy |
![]() ![]()
Сообщение
#1
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Возникла проблема с линковкой чужой dll-ки (точнее lib-файла) к своему приложению написанному на Qt/MinGW32.
получаю сообщения об ошибке: MinGW пытается искать искажённые имена. А Dll-ка выглядит так:DLL-ка создана студийным компиллером, неизвестной версии. Бибилотека, как указано в её описании, пригодна для компиляции как Си так и Си++ компиляторами, без привязки к конкретному производителю компилятора. Однако, в случае с плагином Qt, для поддержки СУБД Firebird, такой проблемы нет. Хотя тамошние lib и dll тоже студийные и тоже не имеют искажений имён. В чём может быть проблема? |
|
|
![]() |
Iron Bug |
![]()
Сообщение
#2
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
это называется декорирование имён (decoration) либо mangling (по-русски я даже хз, как это обозвать). у мелкософта свой метод кодирования этих имён, отличный от большинства других компиляторов, ещё и разный от версии к версии. например, вот тут можно почитать про это: http://en.wikipedia.org/wiki/Name_mangling
обычно, если предполагается работа с другими компиляторами, делают сишный экспорт. т.е. чтобы имена не декорировались и соглашение и порядке переменных в стеке было соблюдено. reimp работает только с новым стандартом "коротких имён", как я понимаю. до студии 2003 включительно - старый формат. после - новый (вроде так). reimp может и не сожрать старые библиотеки. есть статья на эту тему http://msdn.microsoft.com/en-us/library/ty...v=vs.80%29.aspx, но это относится к мелкософтовскому компилеру, я хз, можно ли это прикрутить к mingw. может, тоже есть какие-то тулзы для этой цели, для генерации экспорта. скорее всего есть. если хочешь ковыряться - читай статью в вики и пробуй искать преобразователи форматов. Сообщение отредактировал Iron Bug - 1.1.2011, 15:42 |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 13.7.2025, 3:42 |