'Kinecter::getCloud': эта функция не может быть скомпилирована как управляемая, рассмотрите возможность использования #pragma unmanaged

("Functon" - это опечатка компилятора, не моя :P)

мой вопрос

Что мне нужно сделать, так это получить данные pointcloud (XYZRGBA) из неуправляемого pcl C++ в C#. Я делаю это с помощью следующего кода:

Неуправляемый.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);
}

КОНЕЦ Unmanaged.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 тоже не работает :(


person Danahi    schedule 22.02.2013    source источник


Ответы (1)


Я исправил, оказалось, что это не имеет никакого отношения к этому фрагменту кода -.-

это было создание облака, которое имело проблемы. (для пользователей 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);

Думаю, я не могу отправить облако точек, если не создам зеркальную версию на С#.

person Danahi    schedule 25.02.2013