安装时候至少把MSVC2017 64bit选择上。
用VS2019时候,打开Qt Creator,点击工具->选项,构建套件中可能会显示黄色或者红色感叹号,这个时候就需要额外的配置。
打开VS2019,点击顶部工具 -> 获取工具和功能 -> 在跳出的新页面中点击单个组件。
搜索msvc ->下载MSVC VS 2017 X64/X86的缓解库和生成工具。
打开Qt Creator在Qt Creator的选项中,选择编译器,选择Manual,选择添加MSVC->C++
配置一个32bit和一个64bit的,配置信息如下:【名称可以随便取】
选择Debugger,查看是否拥有下面两个调试器。
没有就得去下载【应该一般都是有的】
Windows SDK 和模拟器存档 | Microsoft Developer
在构建套件里面对msvc2017 32和64-bit进行配置,C++选择我们之前对应配置的即可。
这里要注意,如果你python用过QT,一定要把QT环境变量的位置放在python路径的前面,不然最后运行程序的时候会报错。
“Qt无法定位程序输入点QXXXX于动态链接库XXXX”
vtk下载地址:Download | VTK
Cmake下载地址:Download | CMake
vtk下好后找一个位置解压VTK-8.2.0,同时在同一目录下新建VTK-install,和VTK-prefix。
以管理员的身份运行Cmake,文件源为vtk-8.2.0,输出到我们新建的vtk-install里面,grouped和advanced的✔要点上,不然看着很乱。
之后再点击config。
选择配置如下
生成完成之后勾选一些需要编译的东西。
BUILD里面把BUILD_EXAMPLES打✔,最好不要✔BUILD_TESTING,虽然据说把这个打上勾不会出现可能出现的编译路径错误,但是会大大增加vs编译的时间。
CMAKE里面在CMAKE_INSTALL_PREFIX的路径,选择为我们之前新建的VTK-prefix文件
Module里面勾选vtkGUISupportQt即可
VTK里面勾选VTK_Group_QT即可
之后点击configure再次进行编译
注意这里的地址一定要同你QT中msvc2017-64/lib/cmake的地址一样,如果你环境变量没问题,这里就不会有问题。
再次点击configure,如果全是白色的,就点击Genrate,等待一会儿,生成完成后,点击open project。或者点击vtk-install里面的VTK-sln即可。
打开VS2019后,将顶部设置为Release和X64。
点击左侧ALL BUILD,先点击设为启动项目,再点击生成即可。
如果编译中出现:path use undefined Qpainter的错误,参考解决方式:
vtk8.2.0 + vs2019 + qt5.15.1编译_wangsen8的博客-CSDN博客
编译完成后,点击执行INSTALL,在vtk-prefix目录下会生成对应文件。
将这个路径添加到环境变量中
将vtk-prefix位置【F:\VTK\VTK-prefix\plugins\designer】的QVTKWidgetPlugin.dll
以及vtk-install位置【F:\VTK\VTK-install\lib\Release】 的QVTKWidgetPlugin.exp与
QVTKWidgetPlugin.lib
放到对应QT编译器msvc2017_64的文件目录下【F:\QT\QT5.14.2\5.14.2\msvc2017_64\plugins\designer】
这个时候点击对应编译器msvc2017_64版本目录下【F:\QT\QT5.14.2\5.14.2\msvc2017_64\bin】的designer.exe,就可以看到对应的QVTK组件。
点击VS2019上方拓展->管理拓展,在对应界面搜索QT并安装即可。
安装好后重启,在拓展里面的QT VS TOOLS里的QT Versions进行设置。
Path设置成QT中的msvc2017_64位置即可。
在新建项目中选择 Qt Widgets Application,一直点next即可。
选择编译模式Release/x64
点击Form Files下的QtWidgetsApplication.ui,如果出现无法打开ui文件
右键选择打开方式
点击添加,程序选择对应编译器下面的designer.exe[F:\QT\QT5.14.2\5.14.2\msvc2017_64\bin\designer.exe]
再点击确定即可。
点击项目右边的属性。
在VC++ 目录中,设置包含目录,将路径【F:\VTK\VTK-prefix\include\vtk-8.2】放入包含目录。
在VC++ 目录中,设置库目录,将路径【F:\VTK\VTK-prefix\lib】放入库目录。
来到F:\VTK\VTK-prefix\lib目录下
新建一个txt文件输入: DIR *.lib /B >LIBLIST.TXT,之后将文件名后缀改为bat,双击这个bat会再生成一个txt文件。
将这个txt文件中的内容全选复制,来到链接器的输入部分,编辑附加依赖项,将刚才复制的全部放进去。
点击应用
在右侧main.cpp放入我们的测试代码:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include "vtkAutoInit.h"
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
int main(int argc, char *argv[])
{
vtkSmartPointer sphereSource =vtkSmartPointer::New();
sphereSource->SetCenter(0.0, 0.0, 0.0);
sphereSource->SetRadius(5.0);
vtkSmartPointer mapper =vtkSmartPointer::New();
mapper->SetInputConnection(sphereSource->GetOutputPort());
vtkSmartPointer actor = vtkSmartPointer::New();
actor->SetMapper(mapper);
vtkSmartPointer renderer =vtkSmartPointer::New();
vtkSmartPointer renderWindow =vtkSmartPointer::New();
renderWindow->AddRenderer(renderer);
vtkSmartPointer renderWindowInteractor =vtkSmartPointer::New();
renderWindowInteractor->SetRenderWindow(renderWindow);
renderer->AddActor(actor);
renderer->SetBackground(.3, .6, .3);
renderWindow->Render();
renderWindowInteractor->Start();
return EXIT_SUCCESS;
}
点击运行
(1)如果编译最后出现报错:“ 由于找不到tbb.dll,无法继续执行代码”
这个是因为C:\Windows\System32下面少了tbb.dll文件。解决方式是喊个电脑是好的把这个文件发给你,不过微信好像不能发这个文件,我是用U盘拷的实验室的哥们儿的。
把别人正常电脑的C:\Windows\System32下面的tbb_waves.dll文件拷下来,复制到我们的电脑,改成tbb.dll即可正常运行。
(2)如果编译报错为:找不到Qt无法定位程序输入点QXXXX于动态链接库XXXX问题
那么就是环境变量顺序的错误。
解决方式:
Qt无法定位程序输入点QXXXX于动态链接库XXXX问题的解决方法_苏瓜皮的博客-CSDN博客
真的很烦,这个东西,因为系统文件dll的缺失和之前python安装过PYQT的原因卡了我三天才把这个配好,真的吐了,之后还有两个月的开发周期,我真的会谢