crossplatform.ru

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

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Проблема с подключением внешней библиотеки
Vas2
  опции профиля:
сообщение 3.6.2011, 20:34
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 4
Регистрация: 2.6.2011
Пользователь №: 2715

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




Репутация:   0  


у меня Qt creator 2.0.1, основан на 4.7, WinXP, minGW
подключил 2 библиотеки P100X.lib, PortLib.lib
в файле .pro
LIBS += P100X.lib
LIBS += PortLib.lib

обе библиотеки он находит (проверено изменением имени), обе находятся в одном и томже каталоге программы
фунукции библиотеки P100X.lib находит , а функции библиотеки PortLib.lib не находит, пишет ошибку: undefined reference to 'имя функции'
особенности: библиотека P100X.lib содержит в себе запросы к библиотеки P100X.dll, а библиотека PortLib.lib полность статическая
библиотека PortLib.lib имеет свой хидер (.h) не совпадающий с именем библиотеки (пробовал вручную создавать совпадающее имя) - библ не мои
Вопрос: чтоже всетаки можно попробовать чтобы использовать функции из 2-ой библиотеки??? За любой ответ буду очень признателен
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 4.6.2011, 9:43
Сообщение #2


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

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

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




Репутация:   94  


тебе на прогорге по-моему уже всё объяснили.

Статически линкуемая библиотека линкуется на этапе компиляции, поэтому руками разрешать её функции не надо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 5.6.2011, 1:53
Сообщение #3


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

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




Репутация:   12  


посмотри namespace'ы. вроде бы портлиб имеет свой namespace.

Сообщение отредактировал Iron Bug - 5.6.2011, 1:55
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Vas2
  опции профиля:
сообщение 5.6.2011, 17:06
Сообщение #4


Новичок


Группа: Новичок
Сообщений: 4
Регистрация: 2.6.2011
Пользователь №: 2715

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 4.6.2011, 10:43) *
тебе на прогорге по-моему уже всё объяснили.

Статически линкуемая библиотека линкуется на этапе компиляции, поэтому руками разрешать её функции не надо.



может я не очень понимаю выражение (разрешать руками): я просто вызываю функции которые находятся в этой библиотеке и соответственно содержатся в хидере h.h.
моя прога:
status=InstallDriverWithSCManager();
if (status==false)
{ ...
кроме добавки в файл .pro друго кода не добавлял

Библиотеку качал отсюда: http://www.pcports.ru/articles/4.php

Цитата(Iron Bug @ 5.6.2011, 2:53) *
посмотри namespace'ы. вроде бы портлиб имеет свой namespace.


как я могу это посмотреть?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 5.6.2011, 17:26
Сообщение #5


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

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

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




Репутация:   94  


Цитата(Vas2 @ 5.6.2011, 20:06) *
Библиотеку качал отсюда: http://www.pcports.ru/articles/4.php
Цитата
Итак, создаем пустой проект консольного приложения в VS++
а ты каким компилятором ползуешься?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Vas2
  опции профиля:
сообщение 5.6.2011, 18:31
Сообщение #6


Новичок


Группа: Новичок
Сообщений: 4
Регистрация: 2.6.2011
Пользователь №: 2715

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 5.6.2011, 18:26) *
Цитата(Vas2 @ 5.6.2011, 20:06) *
Библиотеку качал отсюда: http://www.pcports.ru/articles/4.php
Цитата
Итак, создаем пустой проект консольного приложения в VS++
а ты каким компилятором ползуешься?


компилятором minGW, и что библиотека скомпанованная vs6 не подойдет для линковщика minGW? предыдуще указанная библиотека точно также от vs6 - а она компилится и линкуется !!!
предыдуще указанная библиотека, качал здесь http://ftp.icpdas.com.tw/pub/cd/iocard/pci...2/dll_ocx/demo/ " dll_vc6_070314.exe "
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Vas2
  опции профиля:
сообщение 6.6.2011, 2:24
Сообщение #7


Новичок


Группа: Новичок
Сообщений: 4
Регистрация: 2.6.2011
Пользователь №: 2715

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




Репутация:   0  


судя по вот этому http://forum.swamp.ru/viewtopic.php?p=1933292 сообщение от: Чт Фев 04, 2010 11:08 am
можно применить утилиту reimp.exe для преобразования
у меня в утилитах компилятора ее нет, скачал отдельно из архива mingw-utils-0.3.tar.gz но все равно ничего не выходит
в файле документации нашел такие строки:
Раскрывающийся текст
If an input library contain regular objects (non-imports, i.e code and data) `reimp' will write out those objects unless you specify one of
the `--only-def' and `--dump-symbols' options. You probably want to include those objects as well in the generated library. `reimp'
doesn't do that automatically so you have to do it manually using `ar', like this
reimp imp.lib # this generates several .o or .obj files.
ar rcs libimp.a *.obj # add them to library

подставил свою библиотеку, после нее выходит файл с именем "0" чуть меньшего размера и файл в 2.5 раза меньше изначальной библиотеки, но он все равно не подходит!!!
есть утилита ranlib - но чем отличаются и как работает невыяснил, может кто подскажет чего?
или может этот файл .а я в неправильное место поставил (у меня он был тут С:Qt\2010.05\mingw\lib, в принципе в файл проекта я его тоже пробовал ложить)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 6.6.2011, 6:58
Сообщение #8


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

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




Репутация:   12  


если это разные компилеры, то могут быть проблемы
Цитата(Vas2 @ 5.6.2011, 20:31) *
библиотека точно также от vs6 - а она компилится и линкуется !!!

вопросы экспорта в основном следующие:
несовпадение декорированных имён (если библиотека собрана без def-файла). это либо пересобрать библиотеку с def, либо писать имена функций с "хвостами", как они есть.
если библиотека экспортирует классы, то скрестить мелкософт с мингвом, увы, не удастся в принципе. тогда нужно писать доп. библиотеку для msvc, которая будет линковать к себе lib, создавать класс и экспортировать чистые функции, без классов. причём собирать её надо обязательно с .def файлом, т.е. чтобы ничего лишнего там не болталось, никаких хвостов с декорированием. а потом её обрабатывать reimp'ом (причём именно 0.3, ибо 0.4 глючный).
либо юзать её через LoadLibrary(без .lib). я так делала, у меня работает.

Сообщение отредактировал Iron Bug - 6.6.2011, 7:01
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_Vas2_*_*
сообщение 6.6.2011, 16:17
Сообщение #9





Гости








    


Цитата(Iron Bug @ 6.6.2011, 6:58) *
если это разные компилеры, то могут быть проблемы
Цитата(Vas2 @ 5.6.2011, 20:31) *
библиотека точно также от vs6 - а она компилится и линкуется !!!

вопросы экспорта в основном следующие:
несовпадение декорированных имён (если библиотека собрана без def-файла). это либо пересобрать библиотеку с def, либо писать имена функций с "хвостами", как они есть.
если библиотека экспортирует классы, то скрестить мелкософт с мингвом, увы, не удастся в принципе. тогда нужно писать доп. библиотеку для msvc, которая будет линковать к себе lib, создавать класс и экспортировать чистые функции, без классов. причём собирать её надо обязательно с .def файлом, т.е. чтобы ничего лишнего там не болталось, никаких хвостов с декорированием. а потом её обрабатывать reimp'ом (причём именно 0.3, ибо 0.4 глючный).
либо юзать её через LoadLibrary(без .lib). я так делала, у меня работает.

спасибо за ответ , попробую лучше другой с динамической библиотекой может что толковое выйдет
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_Vas2_*_*
сообщение 6.6.2011, 17:41
Сообщение #10





Гости








    


Цитата(Iron Bug)
либо юзать её через LoadLibrary(без .lib). я так делала, у меня работает.


а можно по подобнее про этот метод (еще лучьше какой-нибудь банальный пример)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




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