Как скрестить C# и mixed managed C++?
От: Schumi  
Дата: 07.12.03 10:53
Оценка:
Подскажите пожалуйста как быть в такой ситуации:
имеется код написанный на старом добром C++ со своей umanaged структурой данных, и имеется managed класс, хранящий в себе экземпляр этой структуры + какие-то функции:

namespace TEST
{

struct tagData
{
int data1;
float data2;

// ... и т.д.
};

public __gc class MData
{
public:
MData() {};

void func() {};


tagData data;
}

}


Теперь возникает необходимость из C# проекта обратиться к полям этой струкуры, но получаем отлуп компилятора, который совершенно не видит поля структуры:

using System;
using TEST;

namespace TESTCLIENT
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
MData client = new MData();

//!!! error CS0117: 'tagData' does not contain a definition for 'data1'
client.data.data1 = 123;
}
}
}

Самое забавное что из отладчика все поля видны! Как быть и чего делать?

PS. При этом полей у структуры на порядок больше и их(структур) не одна, так что писать на каждую по методам get/set не представляется реальным
Re: Как скрестить C# и mixed managed C++?
От: Hacker_Delphi Россия  
Дата: 07.12.03 10:58
Оценка:
Здравствуйте, Schumi, Вы писали:

S>Подскажите пожалуйста как быть в такой ситуации:

S>имеется код написанный на старом добром C++ со своей umanaged структурой данных, и имеется managed класс, хранящий в себе экземпляр этой структуры + какие-то функции:
[skipped]
S>Самое забавное что из отладчика все поля видны! Как быть и чего делать?

S>PS. При этом полей у структуры на порядок больше и их(структур) не одна, так что писать на каждую по методам get/set не представляется реальным

А придется.. иначе — никак.. ну еще вариант написать managed структуру, которую через Marshal.StructToPtr и Marhsal.PtrToStruct (или типа тогго — точных названий не помню)
преобразовывать...
... << RSDN@Home 1.1.2 beta 1 >>
Если при компиляции и исполнении вашей программы не происходит ни одной ошибки — это ошибка компилятора :)))
Re: Как скрестить C# и mixed managed C++?
От: DEMON HOOD  
Дата: 24.07.04 18:13
Оценка:
Здравствуйте, Schumi, Вы писали:

S>Подскажите пожалуйста как быть в такой ситуации:

S>имеется код написанный на старом добром C++ со своей umanaged структурой данных, и имеется managed класс, хранящий в себе экземпляр этой структуры + какие-то функции:

а если так —
public __gc class MyClass1
    {
public:
         __value struct  Mystruct
         {public:
            int Myint1;
            int Myint2;
         };
    }
... <<Eminem — The Way I Am Rsdn@Home 1.1.4 beta 1 Windows XP 5.1.2600.0 >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.