Здравствуйте IceMage, Вы писали:
IM>Люди, возник вопрос — как создать в программе, написанной на unmanaged c++, объект NET Framework существующий все время выполнения программы.
Создать его в managed коде и присвоить статической managed переменной.
IM>Может подскажет кто, а то когда в обычном классе указатель на такой объект сделать членом класс студия ругается и не дает.
И правильно ругается. Из unmanaged кода ты можешь толко вызывать managed методы, но объекты напрямую ты использовать не можешь, т.к. CLR теряет над ними контроль. Можно написать обёртку из managed функций, с помощью которых дёргать методы managed объекты. Можно ещё попробовать повозиться с pin-указателями.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте IT, Вы писали:
IT>И правильно ругается. Из unmanaged кода ты можешь толко вызывать managed методы, но объекты напрямую ты использовать не можешь, т.к. CLR теряет над ними контроль. Можно написать обёртку из managed функций, с помощью которых дёргать методы managed объекты. Можно ещё попробовать повозиться с pin-указателями.
Наверно, проще всего сделать для .Net-класса C)M-обертку и использовать его как обычный COM-объект.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте VladD2, Вы писали:
IT>>И правильно ругается. Из unmanaged кода ты можешь толко вызывать managed методы, но объекты напрямую ты использовать не можешь, т.к. CLR теряет над ними контроль. Можно написать обёртку из managed функций, с помощью которых дёргать методы managed объекты. Можно ещё попробовать повозиться с pin-указателями.
VD>Наверно, проще всего сделать для .Net-класса C)M-обертку и использовать его как обычный COM-объект.
Тогда ещё можно сделать из него веб-сервис и использовать его как веб-сервис
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте IT, Вы писали:
VD>>Наверно, проще всего сделать для .Net-класса C)M-обертку и использовать его как обычный COM-объект.
IT>Тогда ещё можно сделать из него веб-сервис и использовать его как веб-сервис :)
Угу. :)
Но все оказалось проще:
#include <vcclr.h>
class A
{
gcroot<String *> str; // Или любой другой указатель на managed-класс
};
Здравствуйте IceMage, Вы писали:
IM>Угу.
IM>Но все оказалось проще:
IM>#include <vcclr.h>
IM>class A IM>{ IM> gcroot<String *> str; // Или любой другой указатель на managed-класс IM>};
IM>Всем спасибо за ответы.
IT! Мотай на ус!
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.