Как динамически включить файл .lib? - PullRequest
0 голосов
/ 30 ноября 2010

У меня проблема с моим проектом.Я разрабатываю его на Qt Creator, и мне нужно добавить файл .lib в мой проект.Итак, я написал эту строку в моем .pro:

LIBS += "C:\My_Path\My_Project\lib\file.lib"

Это работает нормально.Моя единственная проблема заключается в том, что мне нужно написать полный путь к файлу .lib.Поскольку это групповой проект, его необходимо компилировать на других компьютерах, не меняя каждый раз путь к этому файлу.

Я пробовал много синтаксисов, таких как:

LIBS += -L"lib/" -l"file.lib"

или

LIBS += "lib\file.lib"

или

LIBS += "file.lib"

(поместив файл .lib вroot и добавление его в проект в Qt Creator)

Ни один из них не работает: /

Я также пытался добавить файл .lib в файл QResource, но синтаксис, подобный этому:

LIBS += ":/lib/file.lib"

в .pro-файле, похоже, не работает ...

У меня заканчиваются идеи: (

Помогите пожалуйста:)

Ответы [ 3 ]

1 голос
/ 30 ноября 2010

Вы пробовали

LIBS += -Llib -lfile

или

LIBS += -L./lib -lfile

Помните, что если вы не используете полный путь, вы не добавляете .lib к имени библиотеки и не используете кавычки. Если в пути есть пробелы (или вы просто хотите быть в безопасности), используйте $$quote(-L<path name>)

Как указано здесь пути в стиле Unix работают также и в Windows, где обычно требуется указать полный путь. qmake заполнит его для вас.

Я преобразовал

LIBS += ../../lib/phraseBox.lib

до

LIBS += $$quote(-L../../lib) -lphraseBox

и

LIBS += $$quote(-L../../lib) phraseBox.lib

В одном из моих проектов без проблем на Windows. Возможно, вы захотите опубликовать файлы вашего проекта где-нибудь, или опубликовать фактические сообщения об ошибках, чтобы сузить это.

1 голос
/ 02 декабря 2010

Хорошо, я нашел решение:

каталог lib / должен находиться в том же каталоге, что и Makefile (настоящий, а не .pro).
Поскольку я скопировал каталог lib / в каталог build-desktop /, все работает нормально, используя относительные пути:)

0 голосов
/ 30 ноября 2010

Судя по вашим попыткам, вы хотите связать библиотеку, используя относительный путь, который по умолчанию должен работать нормально.

Попробуйте это:

LIBS += -L$$relative/directory/path -llibname

Если это не работает, то вы можете попробовать установить несколько INCLUDEPATH. : /

...