Обрабатывать события c # в firebreath PluginAPI.cpp с помощью COM Callable Wrapper

Есть ли ЗАОВсе в огненном дыхании помочь в этом вопросе? Потому что то, что я только что видел, он обрабатывает только события, произошедшие в проекте firebreath (native c ++). Я здесь?
Я использовал концепцию интерфейса IConnectionPoint для установления соединения с исходящим интерфейсом, содержащим сигнатуры событий. Мой код очень похож эта почта.

Также я нашел это информация о подключении COM с клиентом.Есть вопрос здесь и сейчас:
Должен ли мой класс PluginAPI реализовать этот исходящий интерфейс в файле PluginAPI.h?
Как это,

class PluginAPI : public FB::JSAPIAuto, public ManagedDLL::ICalculatorEvents
{
//register methods
}

Если так, то это поднимает 2 ошибки

  1. Рассказ не может создать экземпляр абстрактного класса. Указывает мне на эти строки make_shared.hpp

    шаблон< класс T, класс A1, класс A2>
    повышение :: shared_ptr< T> make_shared (A1 && а1, а2 && а2)
    {
    повышение :: shared_ptr< T> pt (static_cast< T *> (0), BOOST_SP_MSD (T));

    boost::detail::sp_ms_deleter< T > * pd = boost::get_deleter< boost::detail::sp_ms_deleter< T > >( pt );
    
    void * pv = pd->address();
    
    ::new( pv ) T(         ////HERE
    boost::detail::sp_forward<A1>( a1 ),
    boost::detail::sp_forward<A2>( a2 )
    );
    

и 2. для alignment_of.hpp

template <typename T>
struct alignment_of_hack
{
char c;
T t;        ///HERE
alignment_of_hack();
};

Застрял здесь на последние 2 дня. Также любой обходной путь для этого.

0

Решение

Ничего не знаю о взаимодействии C #, которое вы пытаетесь сделать, но я могу вам сказать, что проблема, с которой вы сталкиваетесь с «не может создать экземпляр абстрактного класса», заключается в том, что вы расширяете ManagedDLL :: ICalculatorEvents, и это, предположительно, абстрактный базовый класс, Это означает, что вам нужно реализовать чисто виртуальные функции, которые находятся в этом классе.

Кроме этого я понятия не имею. Одной из идей может быть разделение кода FireBreath и кода вызова COM и создание класса, который вы будете использовать в качестве моста. Вместо того, чтобы вносить изменения в свой объект PluginCore, который уже тесно связан с огненным дыханием, создайте новый объект, который может стать мостом, и сделайте с этим странные вещи.

Просто мысль; Я думаю, что это упростит вещи, потому что тогда вы могли бы задавать вопросы, которые касались бы как стороны COM, так и только FireBreath. Когда вы смешиваете их, вы попадаете в ситуации, когда люди не отвечают, потому что они знают только одно или другое и не знают, как та половина, которую они не понимают, может влиять на вещи =]

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]