Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Ascet от Март 30, 2015, 08:27



Название: сборка библиотеки с созданием *.lib файла.
Отправлено: Ascet от Март 30, 2015, 08:27
Есть библиотечка, при сборке её с указанием в про файле следующего:

Код:
TEMPLATE = lib

в папке сборки есть файлы *.a, но нет файлов *.lib, а для подключения этой библиотечки к другому проекту Qt 4.8 просит *.lib файл. Чтение интернетов мне не помогло... Можете для дурака рассказать что надо сделать, чтоб собрать проект и получить *.lib файлы?


Название: Re: сборка библиотеки с созданием *.lib файла.
Отправлено: gil9red от Март 30, 2015, 08:32
На винде была такая фигня -- переименовал "a" в "lib" (или наоборот) и все нашлось и собралось :D


Название: Re: сборка библиотеки с созданием *.lib файла.
Отправлено: Ascet от Март 30, 2015, 08:52
Серьезно? О_о
Мало верится конечно, но попробую)


Название: Re: сборка библиотеки с созданием *.lib файла.
Отправлено: Ascet от Март 30, 2015, 08:57
Ну как и чувствовал фокус не удался
Цитировать
:-1: ошибка: No rule to make target 'E:/progs/NovAtel/NovAtel/3rdParty/QSerialPort/lib/libQt5SerialPortd.a', needed by 'debug\NovAtel.exe'.  Stop.


Название: Re: сборка библиотеки с созданием *.lib файла.
Отправлено: Kurles от Март 30, 2015, 09:29
на сколько я в курсе - *.lib по умолчанию использует msvs, а *.a - mingw. Если компилятор один и тот же - тогда странно всё, покажите ваши *.pro файлы.


Название: Re: сборка библиотеки с созданием *.lib файла.
Отправлено: Ascet от Март 30, 2015, 09:33
ммм... То есть если я использую mingw, а на целевой системе msvs, то маневр не выйдет?


Название: Re: сборка библиотеки с созданием *.lib файла.
Отправлено: kuzulis от Март 30, 2015, 11:32
Выйдет и так и наоборот (конечно, если сами shared библиотеки правильно собраны).

1) Если нужно подключить в студии MinGW-шную dll-ку, то просто подключаем как обычно  (http://stackoverflow.com/questions/2096519/from-mingw-static-library-a-to-visual-studio-static-library-lib)

2) Если нужно в MinGW студийную dll-ку - то тоже без проблем.

Если же возникают проблемы, то, вероятно библиотеки собраны без совместимости (или как там их) и нужно их конвертировать. Точнее конвертировать не сами *.dll, а их *.lib или *.a ипморт-файлы. В гугле поищи что - да как.

PS: Ну,  в твоем случае, вероятнее всего ты что-то делаешь не так.


Название: Re: сборка библиотеки с созданием *.lib файла.
Отправлено: alex312 от Март 30, 2015, 11:50
Выйдет и так и наоборот (конечно, если сами shared библиотеки правильно собраны).
Cудя по выхлопу , библиотечка то твоя. Так что? Взлетит ?  ;)

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


Название: Re: сборка библиотеки с созданием *.lib файла.
Отправлено: Kurles от Март 30, 2015, 11:50
Выйдет и так и наоборот (конечно, если сами shared библиотеки правильно собраны).
Вроде нет единого стандарта экспорта С++ окружения (?, не знаю, как правильно написать) в dll, и mingw с msvs совершенно в этом плане не совместимы. Для разных компиляторов стандартизированы только plain C вызовы. Или я где-то что то упустил? :)


Название: Re: сборка библиотеки с созданием *.lib файла.
Отправлено: kuzulis от Март 30, 2015, 12:17
Цитировать
Cудя по выхлопу , библиотечка то твоя. Так что? Взлетит ?

Понятия не имею.

Цитировать
Вроде нет единого стандарта экспорта С++ окружения

Да, точно: http://www.mingw.org/wiki/Interoperability_of_Libraries_Created_by_Different_Compiler_Brands

(у меня все взлетало при использовании C-шных dll-лок, но с C++ наврятли.)

В общем, не взлетит. Нужно все собирать в одном окружении (как выше уже отписались).