Показать сообщение отдельно
Старый 02.10.2016, 16:56   #6
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Передача сложных данных

h1dd3n, как пробросить массив такого (C#):
[StructLayout(layoutKind:LayoutKind.Sequential)]
        public 
struct GLLine
        
{
            public 
float x1;
            public 
float y1;
            public 
float x2;
            public 
float y2;
            public 
float thinkness;
            [
MarshalAs(UnmanagedType.ByValArraySizeConst 3)]
            public 
int[] color;

            public 
GLLine(Line line)
            {
                
x1 = (float)line.X1;
                
x2 = (float)line.X2;
                
y1 = (float)line.Y1;
                
y2 = (float)line.Y2;

                
color = new int[3] { 256,256,256};
                if(
line.Stroke is SolidColorBrush)
                {
                    
Color c = ((SolidColorBrush)(line.Stroke)).Color;
                    
color[0] = c.R;
                    
color[1] = c.G;
                    
color[2] = c.B;
                }
                
thinkness = (float)line.StrokeThickness;
            }
        }; 
в эту фунцию?
void GLAddLineArray(GLLine *line) {
    
lineBuffer.insert(lineBuffer.end(), lineline + (sizeof(line) / sizeof(line[0])));

Если просто писать:
[DllImport(DLL_PATHCallingConvention CallingConvention.Cdecl)]
        public static 
extern void GLAddLineArray(GLLine[] line); 
То ничего не работает, хотя если по одиночке структуру кидать - все нормально.
[DllImport(DLL_PATHCallingConvention CallingConvention.Cdecl)]
        public static 
extern void GLAddLine(GLLine line); 
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием