C++ vtkTypeTraits.h错误:";类型long的大小不是4或8字节。”;

C++ vtkTypeTraits.h错误:";类型long的大小不是4或8字节。”;,c++,visual-studio-2013,vtk,C++,Visual Studio 2013,Vtk,我在Visual Studio 2013中使用VTK 7.1.0(版本x64)编译项目时遇到问题 当我构建项目时,我在vtkTypeTraits.h文件中得到以下错误: 错误71错误C1189:#错误:“中的Type long不是4或8字节 大小。“..\vtk-7.1.0\common\core\vtkTypeTraits.h 115 1 与这些行对应的代码为: #ifndef vtkTypeTraits_h #define vtkTypeTraits_h #include "vtkSyst

我在Visual Studio 2013中使用VTK 7.1.0(版本x64)编译项目时遇到问题

当我构建项目时,我在vtkTypeTraits.h文件中得到以下错误:

错误71错误C1189:#错误:“中的Type long不是4或8字节 大小。“..\vtk-7.1.0\common\core\vtkTypeTraits.h 115 1

与这些行对应的代码为:

#ifndef vtkTypeTraits_h
#define vtkTypeTraits_h

#include "vtkSystemIncludes.h"
#include "vtkType.h"

 ............

// Define traits for long types.
#define VTK_TYPE_NAME_LONG long
#define VTK_TYPE_NAME_UNSIGNED_LONG unsigned long
#if VTK_SIZEOF_LONG == 4
# define VTK_TYPE_SIZED_LONG INT32
# define VTK_TYPE_SIZED_UNSIGNED_LONG UINT32
VTK_TYPE_TRAITS(long, LONG, 1, Int32, long, "%ld");
VTK_TYPE_TRAITS(unsigned long, UNSIGNED_LONG, 0, UInt32, unsigned long, "%lu");
#elif VTK_SIZEOF_LONG == 8
# define VTK_TYPE_SIZED_LONG INT64
# define VTK_TYPE_SIZED_UNSIGNED_LONG UINT64
VTK_TYPE_TRAITS(long, LONG, 1, Int64, long, "%ld");
VTK_TYPE_TRAITS(unsigned long, UNSIGNED_LONG, 0, UInt64, unsigned long, "%lu");
#else
# error "Type long is not 4 or 8 bytes in size." 
#endif

你能帮帮我吗

看起来
VTK_size of_LONG
不是
\define
d。 您不能将其定义为
#define VTK\u SIZEOF\u LONG SIZEOF(LONG)
,因为在预处理期间不会计算
SIZEOF()

我希望您需要
#包含一个主配置文件,该文件定义了VTK平台的此宏和任何其他
(大小)宏
),以便有条件地正确编译自己


在任何现代平台上,这可能是4或8,正如所暗示的那样。

你能找出
VTK\u SIZEOF\u LONG
实际上是什么吗?不,我不能。当我试图显示它的值时,我什么也没有得到。听起来好像你没有拉入
vtkType.h
。您是否可以编辑您的问题以包含--或至少显示您的
#include
语句。可能是构建设置造成的
VTK_SIZEOF_LONG
应定义为
KWIML_ABI_SIZEOF_LONG
。KWIML库看起来有一些自动头生成正在进行。我真正能建议的就是检查是否包含了
'Common/Core/vtkType.h'
,然后按照从那里到
vtk_kwiml.h
@djgandy的链条进行操作,谢谢您的帮助。我还有
#include
d
vtk_kwiml.h
文件,以及
abi.h
int.h
文件,但错误仍然是一样的。感谢您的帮助!除了vtkType.h之外,您知道有任何包含SIZEOF宏的文件吗?@MariaTsourma如果您查看vtkType.h,您会发现这些值是根据其他值定义的,这些值会返回到
abi.h
abi.h
查看一些平台#定义您可能需要在项目中定义或在命令行中提供的平台,以便选择正确的定义。。。。很抱歉再次询问,我已经包括了
vtkType.h
abi.h',以及
vtk_kwiml.h',以防我遗漏了什么。问题还是一样。我是否对
#include
做了一些错误的事情?