Как связать библиотеки с проектом на visual studio? - PullRequest
0 голосов
/ 23 апреля 2019

Мне нужно создать решение на VS Express 2017 с двумя самодельными dll, LIB_COMMON и LIB_VIEW, проектом бина TEST_VIEW, содержащим main.cpp и использующим Qt. У меня есть все необходимое в моей папке, и я устанавливаю переменные окружения при запуске решения с командным файлом.

Но у меня две проблемы. Во-первых, мне не удается связать Qt с используемыми проектами. Во-вторых, в свойствах единственное, что я нашел, чтобы связать свой проект dll, это добавить вручную каждый файл obj (да, файлы obj, а не lib ...), как в этом примере. (LIB_VIEW содержит заголовочные файлы и файлы cpp VIEW_FACTORY, VIEW_View, VIEW_IView.

linker -> entry -> additional dependencies -> $(LIB_VIEW)\Obj\$(Platform)\$(Configuration)\VIEW_FACTORY;$(LIB_VIEW)\Obj\$(Platform)\$(Configuration)\VIEW_IView;$(LIB_VIEW)\Obj\$(Platform)\$(Configuration)\VIEW_View;kernel32.lib;user32.lib;gdi32.lib;winspool32.lib      etc.

(поскольку путь к файлам obj: SOLUTION_NAME / LIB_VIEW / Obj / x64 / Debug / для файла lib: SOLUTION_NAME / LIB_VIEW / Lib / x64 / Debug / для включает в себя: SOLUTION_NAME / LIB_VIEW / Inc /)

Это ужасно, и когда я не могу связать библиотеки Qt таким образом. Вот некоторые подробности

Пакетный файл

set PROJECT_HOME=%~dp0
set PROJECT_TOOLS=%PROJECT_HOME%\Tools

set LIB_TOOLS=%PROJECT_HOME%\LIB_COMMON

echo "----------------------------" 
echo "--- SET_ENV_QT" 
echo "----------------------------" 

set QT_HOME==%PROJECT_TOOLS%\Qt\5.12.0\x64\5.12.0\msvc2017_64

set QT_BIN=%QT_HOME%\bin
set QT_LIB=%QT_HOME%\lib
set QT_INC=%QT_HOME%\include
set QT_QML=%QT_HOME%\qml

echo "----------------------------" 
echo "--- SET_ENV_VISUAL" 
echo "----------------------------"

set LIB_COMMON=%PROJECT_HOME%\LIB_COMMON\
set LIB_VIEW=%PROJECT_HOME%\LIB_VIEW\


set PATH=%OSPL_BIN%;%OSPL_LIB%;%PATH%

echo "----------------------------" 
echo "--- LAUNCH_SLN" 
echo "----------------------------"

"%PROJECT_HOME%\SOLUTION_NAME.sln"

Как я уже говорил ранее, я нашел способ включить мою dll в основной проект: в свойствах TEST_VIEW:

C/C++ -> General -> Additionnal Include directories -> $(LIB_COMMON)/Inc;$(LIB_VIEW)/Inc;$(AdditionalIncludeDirectories);$(QtGui);
linker -> entry -> additional dependencies -> $(LIB_VIEW)\Obj\$(Platform)\$(Configuration)\VIEW_FACTORY;$(LIB_VIEW)\Obj\$(Platform)\$(Configuration)\VIEW_IView;$(LIB_VIEW)\Obj\$(Platform)\$(Configuration)\VIEW_View;kernel32.lib;user32.lib;gdi32.lib;winspool32.lib      etc.

Конечно, я не могу включить ни один файл Qt, они не могут быть найдены.

Что я должен изменить в свойствах?

как мне успешно включить QGuiApplication?

1 Ответ

0 голосов
/ 26 апреля 2019

Редактирование: я продолжал добавлять файлы obj моей личной библиотеки DLL в компоновщик и также добавлял туда некоторые библиотеки Qt.

Одна из моих проблем заключалась в том, что библиотеки qt были сохранены в определенной папке, поэтомуприложение не может достичь их.После добавления файлов заголовков, указав путь Qt / include и все библиотеки, необходимые в свойствах, я создал пакетный файл, который добавляет путь к папке dll в PATH моего exe-файла.

set PROJECT_HOME=%~dp0..\..\..\..\
set PROJECT_TOOLS=%PROJECT_HOME%\Tools

set QT_HOME=%PROJECT_TOOLS%\Qt\5.12.0\x64\5.12.0\msvc2017_64

set QT_BIN=%QT_HOME%\bin
set QT_LIB=%QT_HOME%\lib
set QT_INC=%QT_HOME%\include
set QT_QML=%QT_HOME%\qml
set QT_PLATFORM=%QT_HOME%\plugins\platforms

set QML_IMPORT_PATH=%QT_HOME%\qml\QtQuick;%QtHome%\qml\QtQuick2;%QML_IMPORT_PATH%
set PATH=%QT_BIN%;%QT_INC%;%QT_PLATFORMS%;%PATH%

TEST_VIEW3.exe

pause

Ой.И не забудьте проверить путь к Qt.Это было неправильно, поэтому я не смог включить QGuiApplication в компоновщик ...

Теперь все в порядке.У меня все еще есть другая ошибка, но этот шаг сделан.Я надеюсь, что это будет полезно для кого-то.

...