如何在Windows窗体项目(visualc++ 2012)中创建VTK项目
How to create a VTK project in Windows Form Project (VisualC++ 2012 )
我试图将可视化工具包(VTK)库嵌入到visualc++ 2012创建的windows窗体中,以便我可以设计我的windows本机GUI界面。
我想强调的是,控制台应用程序的所有例子都配置了(Cmake),用vc++ 2012编译,并按照官方VTK wiki页面的指示完美地工作。
问题是,如果我尝试调用那些VTK函数和类初始化在Win Form应用程序我得到Error LNK1107: invalid or corrupt file: cannot read at 0x2E0 D:.....VTK_61_BUILD_VS2012binDebugvtkViewsCore-6.1.dll
即使我添加一切正常如预期,包括头和外部库依赖。
这让我认为我起源于错误的Visual c++ 2012项目模板或我完全缺失的一些明显的东西,否则编译器会产生许多未找到的文件或语法错误。
这是我试图调用VTK库的第一行,甚至智能感知建议VTK .....命名进程、函数和结构,但应用程序无法编译。
#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();
这里有什么问题?
当我遇到同样的问题时,下面的链接(特别是Mr. bnsteel的回答)对我帮助很大==>
http://vtk.1045678.n5.nabble.com/VTK-and-Winforms-integration-td5721086.html您可以按照链接下的建议使用Swig。但这是不必要的。使用类似的方法(传递windows窗体面板句柄),你可以像jalal sadeghi建议的那样创建一个c++/CLI包装器。您将通过包装器将面板句柄传递给您的c++库,该库执行所有"VTK工作"。这样,您就不必为所有VTK类创建单独的包装器,所有的"VTK工作"和对VTK的依赖关系都隐藏在您的c++层中。
像这样==>
c++ side
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# side
VTKWrapper.setRenderWindowParentID(m_panel.Handle, .. also pass the panel size ..);
- VS 2012不生成依赖项目
- 在Visual studio 2012中为我的c++项目设置Aquila
- 仅项目 -> 仅清理 项目正在清理 Visual Studio 2012 中的其他项目
- 如果没有项目,如何在Visual Studio 2012中仅编译一个文件(C )
- C++/VS 2012-多项目解决方案:一个项目中存在链接器错误,但另一个项目没有
- VS 2012-由于缺少工具集,项目未能生成
- Visual Studio 2012 调试多个项目
- 如何使用Visual Studio Professional 2012获取C++项目的所有宏
- 将项目移动到Visual Studio 2012时出现问题
- 项目属性中包含Visual Studio 2012附加库
- Cstring 在 VS 2012 中不起作用,但如果使用 VS 2012 打开 VC++ 6.0 项目,则可以工作
- 将 MSVS 2010 项目转换为 MSVS 2012 RC,但出现错误"The C++ standard doesn't provide a hash for this type"
- 在 Visual Studio 2012 中编译启用 CLR C++项目时出现 C2248 错误
- 在Visual Studio 2012中创建空项目后,某些文件会执行哪些操作
- 在 MSVC 2012 中为 Win XP 构建 c++ 项目
- 其中,VS 2012 中 Visual C++ 项目中对静态库的引用
- 无法在 Visual Studio 2012 项目中使用 OpenCV
- VC++ CLR 2012 项目的依赖项
- Visual Studio 2012将项目模板与文件一起导出
- 无法在 Visual Studio 2012 中编译项目