开发平台为Win10 + VS2015 + Kinect V2
日前做的一个小尝试就是将Kinect SDK 2.0 示例CoordinateMappingBasics-D2D中使用D2D的部分给去除了,并且做了一定程度的修改,只是为了个人的方便而已,并不具备普遍意义,不过其中碰到了一些问题,
我想这次修改中最大的改变就是,将如下代码
int APIENTRY wWinMain(
_In_ HINSTANCE hInstance, // _In_ declare a variable only be read and no NULL
_In_opt_ HINSTANCE hPrevInstance, // _In_opt_ allows NULL value
_In_ LPWSTR lpCmdLine,
_In_ int nShowCmd
)
{
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);
CKinect application;
application.Run(hInstance, nShowCmd);
}
修改为了一般使用的int main 或者 void main, 具体如下
void main(int argc, char* argv[])
{
CKinect application;
application.InitializeDefaultSensor();
while (1)
{
application.Update();
}
}
当然这只是为了个人方便而已,其中碰到的问题是 InitializeDefaultSensor() 和 Update() 两个函数本来是 CKinect 类的私有函数, 但是在删除了所有的D2D部分后,就提示我该函数前缀没有定义,但是当这两个函数放到公共之后,就能运行了。其中原因并不是太了解,不过重新看了遍代码后发现 InitializeDefaultSensor() 和 Update() 两个函数是在函数 Run()中的,所以,对象已经明确,所以将两个函数又放回了私有,重新编写代码为
void CKinect::Run()
{
InitializeDefaultSensor();
while (1)
{
Update();
}
}
void main(int argc, char* argv[])
{
CKinect application;
application.Run();
}
就又通过编译了。
最后要记得将 项目 -> 属性 -> 链接器 -> 系统 -> 子系统 改为 Console(/SUBSYSTEM:CONSOLE)