我需要在VS Express 2017上创建一个解决方案,其中包含两个自制的DLL:LIB_COMMON和LIB_VIEW;一个包含main.cpp并使用Qt的bin项目TEST_VIEW。 我的文件夹中有所有需要的东西,并在使用批处理文件启动解决方案时设置了环境变量。
但是我有两个问题。首先,我无法将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?
答案 0 :(得分:0)
编辑: 我一直在链接器中添加我的个人dll的obj文件,并在那里也添加了一些Qt库。
我的问题之一是qt dll存储在特定的文件夹中,因此应用程序无法访问它们。 通过指定路径Qt / include和属性中所需的所有库添加头文件之后,我制作了一个批处理文件,该文件将dll文件夹的路径添加到我的exe文件的PATH中。
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 ...
现在可以了。我仍然有另一个错误,但此步骤已完成。 我希望这对某人有用。