Managed и unmanaged c++
От: IceMage Россия  
Дата: 22.06.02 15:27
Оценка:
Люди, возник вопрос — как создать в программе, написанной на unmanaged c++, объект NET Framework существующий все время выполнения программы.

Может подскажет кто, а то когда в обычном классе указатель на такой объект сделать членом класс студия ругается и не дает.
Re: Managed и unmanaged c++
От: IT Россия linq2db.com
Дата: 22.06.02 15:54
Оценка:
Здравствуйте IceMage, Вы писали:

IM>Люди, возник вопрос — как создать в программе, написанной на unmanaged c++, объект NET Framework существующий все время выполнения программы.


Создать его в managed коде и присвоить статической managed переменной.

IM>Может подскажет кто, а то когда в обычном классе указатель на такой объект сделать членом класс студия ругается и не дает.


И правильно ругается. Из unmanaged кода ты можешь толко вызывать managed методы, но объекты напрямую ты использовать не можешь, т.к. CLR теряет над ними контроль. Можно написать обёртку из managed функций, с помощью которых дёргать методы managed объекты. Можно ещё попробовать повозиться с pin-указателями.
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: Managed и unmanaged c++
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.06.02 20:11
Оценка:
Здравствуйте IT, Вы писали:

IT>И правильно ругается. Из unmanaged кода ты можешь толко вызывать managed методы, но объекты напрямую ты использовать не можешь, т.к. CLR теряет над ними контроль. Можно написать обёртку из managed функций, с помощью которых дёргать методы managed объекты. Можно ещё попробовать повозиться с pin-указателями.


Наверно, проще всего сделать для .Net-класса C)M-обертку и использовать его как обычный COM-объект.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Managed и unmanaged c++
От: IT Россия linq2db.com
Дата: 22.06.02 20:53
Оценка:
Здравствуйте VladD2, Вы писали:

IT>>И правильно ругается. Из unmanaged кода ты можешь толко вызывать managed методы, но объекты напрямую ты использовать не можешь, т.к. CLR теряет над ними контроль. Можно написать обёртку из managed функций, с помощью которых дёргать методы managed объекты. Можно ещё попробовать повозиться с pin-указателями.


VD>Наверно, проще всего сделать для .Net-класса C)M-обертку и использовать его как обычный COM-объект.


Тогда ещё можно сделать из него веб-сервис и использовать его как веб-сервис
Если нам не помогут, то мы тоже никого не пощадим.
Re[4]: Managed и unmanaged c++
От: IceMage Россия  
Дата: 24.06.02 06:27
Оценка:
Здравствуйте IT, Вы писали:

VD>>Наверно, проще всего сделать для .Net-класса C)M-обертку и использовать его как обычный COM-объект.


IT>Тогда ещё можно сделать из него веб-сервис и использовать его как веб-сервис :)


Угу. :)

Но все оказалось проще:

#include <vcclr.h>

class A
{
gcroot<String *> str; // Или любой другой указатель на managed-класс
};

Всем спасибо за ответы.
Re[5]: Managed и unmanaged c++
От: IT Россия linq2db.com
Дата: 24.06.02 13:45
Оценка:
Здравствуйте IceMage, Вы писали:

IM>Но все оказалось проще:


Так твой изначальный вопрос был об unmanaged C++:


Люди, возник вопрос — как создать в программе, написанной на unmanaged c++, объект NET Framework существующий все время выполнения программы.



Твой же пример очень даже managed, просто ты используешь обычные C++ классы.
Если нам не помогут, то мы тоже никого не пощадим.
Re[5]: Managed и unmanaged c++
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.06.02 17:39
Оценка:
Здравствуйте IceMage, Вы писали:

IM>Угу.


IM>Но все оказалось проще:


IM>#include <vcclr.h>


IM>class A

IM>{
IM> gcroot<String *> str; // Или любой другой указатель на managed-класс
IM>};

IM>Всем спасибо за ответы.


IT! Мотай на ус!
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.