qq_52208989 2024-04-12 16:25 采纳率: 0%
浏览 5

关于#c++#的问题:用clion显示几何图形,却多行报错

_用clion显示几何图形,却多行报错:error C2065: “cylinder”: 未声明的标识符_
设置界面:

img

报错界面:

img

main.cpp:


#include <vtkSmartPointer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkInteractorStyleTrackballCamera.h>
#include <vtkCylinderSource.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
int main()
{

    //生成圆柱体
    auto cylinder = vtkSmartPointer<vtkCylinderSource>::New();
    cylinder->SetHeight(3.0);//柱体高
    cylinder->SetRadius(1.0);//主题横截面半径
    cylinder->SetResolution(10);//柱体横截面多边形的边数
    //渲染多边形几何数据,将输入的数据转换成几何图元(点、线、多边形)进行渲染
    auto cylinderMapper =vtkSmartPointer<vtkPolyDataMapper>::New();
    cylinderMapper->SetInputConnection(cylinder->GetOutputPort());//输入数据
    //将渲染的数据转化成vtkProp的形式
    auto cylinderActor = vtkSmartPointer<vtkActor>::New();
    cylinderActor->SetMapper(cylinderMapper);//输入几何图元
    //管理场景的渲染过程,组成场景的对象包括Prop,照相机(vtkCamera)和光照(vtkLight)
    auto renderer = vtkSmartPointer<vtkRenderer>::New();
    renderer->AddActor(cylinderActor);//加入vtkProp类型的对象
    renderer->SetBackground(0.1,0.2,0.4);//设置背景颜色,RGB
    //将操作系统与VTK渲染引擎连接在一起
    auto renWin = vtkSmartPointer<vtkRenderWindow>::New();
    renWin->AddRenderer(renderer);//加入Renderer对象
    renWin->SetSize(300,300);//设置窗口大小
    renWin->SetWindowName("Show");//设置窗口的名称
    //提供平台独立的响应鼠标、键盘和时钟事件交互机制
    auto iren = vtkSmartPointer<vtkRenderWindowInteractor>::New();
    iren->SetRenderWindow(renWin);//设置渲染的窗口
    //交互器样式
    auto style =vtkSmartPointer<vtkInteractorStyleTrackballCamera>::New();
    iren->SetInteractorStyle(style);//设置交互器样式
    iren->Initialize();//初始化窗口处理事件
    iren->Start();//启动窗口
    return 0;
}

cmakelist.txt:


#设置支持cmake的最低版本
cmake_minimum_required(VERSION 3.25)
project(untitled)
#设置c++的版本
set(CMAKE_CXX_STANDARD 17)
#REQUIRED:如果没有找到包,就会弹出错误信息
find_package(VTK 9.2.2 REQUIRED)
#如果找不到包,打印错误信息
if (NOT VTK_FOUND)
    message(FATAL_ERROR "Cube1: Unable to find the VTK build
folder.")
endif()
#构建可执行程序
add_executable(untitled main.cpp)
#链接资源
target_link_libraries(untitled PRIVATE ${VTK_LIBRARIES}
#[[        vtkFiltersCore
        vtkCylinderSource
        vtkPolyDataMapper
        vtkActor
        vtkRenderer
        vtkRenderWindow
        vtkRenderWindowInteractor
        vtkRenderInteractorStyleTrackballCamera]]
)

#vtk重建窗口必须加上
vtk_module_autoinit(
        TARGETS untitled
        MODULES ${VTK_LIBRARIES}
)
  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-12 16:25
    关注

    引自免费微信小程序:皆我百晓生

    看起来你在尝试使用C++和VTK库创建一个简单的三维可视化应用程序,展示一个旋转的圆柱体。然而,你遇到了一些编译错误。首先,让我们解决这些错误。

    错误提示表明cyLindercyLinderMapper等标识符未声明,这可能是因为拼写错误。在C++中,变量名和函数名对大小写敏感。从提供的代码来看,应该是cylindercylinderMapper而不是cyLindercyLinderMapper。请确保你的代码中的所有变量名都正确无误。下面是修正后的代码:

    #include <vtkSmartPointer.h>
    #include <vtkRenderWindow.h>
    #include <vtkRenderer.h>
    #include <vtkRenderWindowInteractor.h>
    #include <vtkInteractorStyleTrackballCamera.h>
    #include <vtkCylinderSource.h>
    #include <vtkPolyDataMapper.h>
    #include <vtkActor.h>
    
    int main()
    {
        // 生成圆柱体
        auto cylinder = vtkSmartPointer<vtkCylinderSource>::New();
        cylinder->SetHeight(3.0); // 柱体高
        cylinder->SetRadius(1.0); // 主题横截面半径
        cylinder->SetResolution(10); // 柱体横截面多边形的边数
    
        // 渲染多边形几何数据
        auto cylinderMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
        cylinderMapper->SetInputConnection(cylinder->GetOutputPort()); // 输入数据
    
        // 将渲染的数据转化成vtkProp的形式
        auto cylinderActor = vtkSmartPointer<vtkActor>::New();
        cylinderActor->SetMapper(cylinderMapper); // 输入几何图元
    
        // 管理场景的渲染过程
        auto renderer = vtkSmartPointer<vtkRenderer>::New();
        renderer->AddActor(cylinderActor); // 加入vtkProp类型的对象
        renderer->SetBackground(0.1, 0.2, 0.4); // 设置背景颜色,RGB
    
        // 将操作系统与VTK渲染引擎连接在一起
        auto renWin = vtkSmartPointer<vtkRenderWindow>::New();
        renWin->AddRenderer(renderer); // 加入Renderer对象
        renWin->SetSize(300, 300); // 设置窗口大小
        renWin->SetWindowName("Show"); // 设置窗口的名称
    
        // 提供平台独立的响应鼠标、键盘和时钟事件交互机制
        auto iren = vtkSmartPointer<vtkRenderWindowInteractor>::New();
        iren->SetRenderWindow(renWin); // 设置渲染的窗口
    
        // 交互器样式
        auto style = vtkSmartPointer<vtkInteractorStyleTrackballCamera>::New();
        iren->SetInteractorStyle(style); // 设置交互器样式
    
        iren->Initialize(); // 初始化窗口处理事件
        iren->Start(); // 启动窗口
    
        return 0;
    }
    

    对于cmakeLists.txt文件,看起来已经包含了正确的依赖项。不过为了保险起见,可以尝试去掉注释并显式列出需要的VTK模块。以下是修改后的cmakeLists.txt

    cmake_minimum_required(VERSION 3.25)
    project(untitled)
    set(CMAKE_CXX_STANDARD 17)
    
    find_package(VTK 9.2.2 REQUIRED)
    if (NOT VTK_FOUND)
        message(FATAL_ERROR "Untitled: Unable to find the VTK build folder.")
    endif()
    
    add_executable(untitled main.cpp)
    
    # 显式列出所需的VTK模块
    target_link_libraries(untitled PRIVATE
        vtkCommonCore
        vtkRenderingOpenGL2
        vtkInteractionStyle
        vtkRenderingCore
        vtkRenderingOpenGL2
        vtkIOImage
    )
    
    # vtk重建窗口必须加上
    vtk_module_autoinit(TARGETS untitled MODULES ${VTK_LIBRARIES})
    

    请确保你的Visual Studio和CMake版本与你的VTK版本兼容,并且路径设置正确。此外,检查一下你的IDE是否正确设置了CMake和Visual Studio作为工具链。如果问题仍然存在,请检查是否有其他可能的干扰因素,比如环境变量或其他配置问题。

    按照上述步骤修改代码后,重新构建项目,应该能够成功编译并运行。如果你还有任何问题,或者需要进一步的帮助,请随时告诉我。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月12日

悬赏问题

  • ¥15 crypto 一道rsa解密题
  • ¥15 survIDINRI已将生存时间转为数值变量,仍错误 Time variable is not numeric。
  • ¥15 重装好几次2022版的vs了,一直sdk报错
  • ¥15 Java安装Idea 下载好jdk 也装好环境配置好了下载好为什么还一直提示这个,为什么啊怎么解决啊
  • ¥15 利用R语言的ActCR包分析昼夜节律数据
  • ¥15 国外SIM卡有信号无法连接,如何解决?
  • ¥15 谷歌怎么像图里这样多开贴吧号
  • ¥80 在UE5中使用AirSim, 无人机无法移动
  • ¥15 bang忙写个 发指定微信名字 excel文件phython
  • ¥15 Python骨架长度检测