0

(“功能”是编译器错字不是我的:P)

我的问题,

我需要做的是从 pcl 非托管 C++ 到 C# 获取点云(XYZRGBA)数据。我使用以下代码执行此操作:

非托管.cpp (C++)

float* getCloud(int clr_width, int clr_height, int dpth_width, 
int dpth_height, int frameId, int clr_focal_x, int clr_focal_y, 
int dpth_focal_x, int dpth_focal_y, unsigned char *image, 
unsigned char *depth_image) const
{
    (some implementation);
}

结束非托管.cpp

.

托管.cpp (C++)

property float[]^ Receiver
{
    float[]^ get()
    {
        return gcnew float[]( Unmanaged->getCloud((int)clr_width, 
        (int)clr_height, (int)dpth_width, (int)dpth_height, (int)frameId, 
        (int)clr_focal_x, (int)clr_focal_y, (int)dpth_focal_x, 
        (int)dpth_focal_y, (unsigned char*)image, 
        (unsigned char*)depth_image) );
    }
}

Managed.cpp 结束

我得到的是标题中的错误:'Kinecter::getCloud':这个函数不能被编译为托管,考虑使用#pragma unmanaged

有人知道如何解决这个问题吗?

顺便说一句:建议:#pragma unmanaged 也不起作用:(

4

1 回答 1

0

我修复了它,事实证明它与这段代码无关 -.-

云的创建遇到了麻烦。(适用于 PCL 用户)

cloud->sensor_origin_.setZero (); // BUGGY
cloud->sensor_orientation_.w () = 0.0;
cloud->sensor_orientation_.x () = 1.0;
cloud->sensor_orientation_.y () = 0.0;
cloud->sensor_orientation_.z () = 0.0;
return (cloud);

我想除非我在 C# 上创建镜像版本,否则我无法发送点云。

于 2013-02-25T11:54:58.903 回答