【问题标题】:How to link libraries to a project on visual studio?如何将库链接到 Visual Studio 上的项目?
【发布时间】:2019-09-12 12:12:08
【问题描述】:

我需要在 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 ?

【问题讨论】:

    标签: c++ qt dll linker visual-studio-express


    【解决方案1】:

    编辑: 我不断在链接器中添加我的个人 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 ...

    现在没事了。我还有另一个错误,但这一步已经完成。 我希望它对某人有用。

    【讨论】:

      猜你喜欢
      • 2017-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-19
      • 2021-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多