如何将库链接到visual studio上的项目?

问题描述 投票:0回答:1

我需要在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 / for includes: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个回答
0
投票

编辑:我继续在链接器中添加我的personnal dll的obj文件,并在那里添加了一些Qt lib。

我的一个问题是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 ...

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

© www.soinside.com 2019 - 2024. All rights reserved.