0

我正在尝试运行 OpenNI 1.5 文档中的示例代码。我已经导入了所需的库 XnCppWrapper.h 以便我可以使用 C++。代码在特定变量“bshouldrun”上只有一个错误。我知道它应该是声明为某事,但由于我是新手,并且文档不包含主要内容之上的任何内容,我不知道将其声明为..请帮助!并提前感谢。

 #include <XnOpenNI.h>
 #include <XnCppWrapper.h>
 #include <stdio.h>

int main()
  {

    XnStatus nRetVal = XN_STATUS_OK;

    xn::Context context;

   // Initialize context object
   nRetVal = context.Init();
   // TODO: check error code

   // Create a DepthGenerator node
   xn::DepthGenerator depth;
   nRetVal = depth.Create(context);
   // TODO: check error code

   // Make it start generating data
   nRetVal = context.StartGeneratingAll();
   // TODO: check error code

   // Main loop
   while (bShouldRun) //<-----------------------------**ERROR;bShouldRun Undefined**
   {
       // Wait for new data to be available
       nRetVal = context.WaitOneUpdateAll(depth);
       if (nRetVal != XN_STATUS_OK)
      {
          printf("Failed updating data: %s\n", xnGetStatusString(nRetVal));
          continue;
      }

       // Take current depth map
       const XnDepthPixel* pDepthMap = depth.GetDepthMap();

       // TODO: process depth map
   }

   // Clean-up
   context.Shutdown();

   }
4

1 回答 1

1

以下是我在 Windows (8) 上运行 Visual Studio 2010 Express 示例的操作:

  1. 从 C:\Program Files (x86)\OpenNI\Samples\NiSimpleViewer 打开 NiSimpleViewer.vcxproj VS2010 项目
  2. 编辑 OpenNI.rc 以在第 10 行注释掉#include "afxres.h"(可能会丢失,因为我使用的是 Express 版本,不确定。您的机器可能编译得很好/不会抱怨缺少的头文件)
  3. 已启用工具 > 选项 > 调试 > 符号 > Microsoft 符号服务器(以解决丢失 pdb 文件的问题)
  4. 可选择编辑SAMPLE_XML_PATHto"SamplesConfig.xml"而不是 default "../../../Data/SamplesConfig.xml",否则您需要从 ..\Bin\Debug\NiSimpleViewer.exe 导航到那里而不是使用 Ctrl+F5 来运行示例可执行文件。A;所以将 SamplesConfig.xml 文件复制到您的示例文件夹中,如下所示

以下是一些图片来说明上述一些步骤: 删除 afxres.h

Microsoft 符号服务器启用

示例 XML 路径模块

样本 xml 复制到文件夹

您还可以编译 NiHandTracker 示例,这听起来更接近您的需要。因此,这解释了 OpenNI 1.5 的设置,这就是您的问题所在。

我在评论中注意到您的 OpenNI 2 lib 问题。这应该是链接 SimpleHandTracker.lib 的问题,您可以通过项目属性(右键单击项目->选择属性)>链接器>输入>附加依赖项>编辑来完成。 库链接 我没有在这台机器上安装 OpenNI2,但假设 SimpleHandTracker.lib 位于 OpenNI_INSTALL_FOLDER\Lib 中。尝试文件搜索,以防我可能错了。

于 2013-06-24T15:05:23.527 回答