gpt4 book ai didi

c++ - 如何在 Windows 窗体项目中创建 VTK 项目 (VisualC++ 2012)

转载 作者:太空宇宙 更新时间:2023-11-04 11:32:33 46 4
gpt4 key购买 nike

我正在尝试将使用可视化工具包 (VTK) 库创建的场景嵌入到 VisualC++ 2012 创建的 Windows 窗体中,以便我可以设计我的 Windows native GUI 界面。

我想强调的是,所有带有控制台应用程序的示例都是使用 (Cmake) 配置的,使用 VC++2012 编译的,并且按照官方 VTK wiki 页面的说明完美运行。

问题是,如果我尝试在 Win Form 应用程序中调用那些 VTK 函数和类初始化,我会得到 错误 LNK1107:无效或损坏的文件:无法在 0x2E0 D:\.....\VTK_61_BUILD_VS2012\bin\Debug\vtkViewsCore-6.1.dll 即使我按预期正常添加所有内容,也包括 header 和外部库依赖项。

这让我觉得我源自错误的 Visual C++ 2012 项目模板或明显我完全缺失的东西,否则编译器会出现许多未找到的文件或语法错误。

这是我尝试调用 VTK 库的第一行,即使智能感知也建议 vtk..... 命名为 proc、函数和结构,但应用程序无法编译。

#pragma once

#include <vtkSmartPointer.h>
#include <vtkTriangle.h>
#include <vtkCellArray.h>
#include <vtkPolyData.h>
#include <vtkRenderWindow.h>

namespace CLR_Project1 {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
...
...
vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New();

这里有什么问题?

最佳答案

当我遇到同样的问题时,以下链接(特别是bnsteel先生的回答)对我帮助很大 ==>

http://vtk.1045678.n5.nabble.com/VTK-and-Winforms-integration-td5721086.html

您可以按照链接下的建议使用 Swig。但没有必要。使用类似的方式(传递 Windows 窗体面板句柄),您可以按照 jalal sadeghi 的建议创建 C++/CLI 包装器。您将通过包装器将面板句柄传递给执行所有“VTK 工作”的 C++ 库。这样您就不必为所有 VTK 类创建单独的包装器,所有“VTK 工作”和对 VTK 的依赖项都隐藏在您的 C++ 层中。

像这样==>

C++ 方面

setImageRenderWindowParentID(void *theID){ 
... (init your vtk render window)
renWin->SetParentId(theID);
}

C++/CLI 端

void setRenderWindowParentID(IntPtr parentID, .. also pass the panel size .. ){
void* p = parentID.ToPointer();
myCPPVTK->setRenderWindowParentID(p, .. also pass the panel size ..);
}

C# 端

 VTKWrapper.setRenderWindowParentID(m_panel.Handle, .. also pass the panel size ..);

关于c++ - 如何在 Windows 窗体项目中创建 VTK 项目 (VisualC++ 2012),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24161640/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com