0

Firebreath中的 JSCallBack对这件事有帮助吗?因为我刚刚看到它只处理 firebreath(native c++) 项目中发生的事件。我在这里吗?我使用 IConnectionPoint 接口的概念与包含事件签名的传出接口建立连接。我的代码与这篇文章非常相似。

我还发现了有关 COM 与客户端连接的信息。现在在这里有一个问题:我的 PluginAPI 类是否需要在 PluginAPI.h 文件中实现这个 Outgoing 接口?像这样,

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

如果是这样,那么它会引发 2 个错误

  1. 告诉不能实例化抽象类。将我指向 make_shared.hpp 的这些行

    模板< class T, class A1, class A2 > boost::shared_ptr< T > make_shared( A1 && a1, A2 && a2 ) { boost::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 天。还有任何解决方法。

4

1 回答 1

1

对您尝试执行的 C# 互操作一无所知,但我可以告诉您,“无法实例化抽象类”的问题是因为您正在扩展 ManagedDLL::ICalculatorEvents 并且它可能是一个抽象基类,这意味着您需要实现该类中的纯虚函数。

除此之外,我完全不知道。一个想法可能是将您的 FireBreath 代码和您的 COM 调用代码分开,并创建一个您将用作桥梁的类。与其对已经与 firebreath 紧密联系的 PluginCore 对象进行更改,不如创建一个可以作为桥梁的新对象并对它做一些奇怪的事情。

只是一个想法; 不过,我认为它会简化一些事情,因为这样您就可以提出有关 COM 端或 FireBreath 的问题。当您将它们混合在一起时,您会遇到人们不回答的情况,因为他们只知道其中之一,并且不知道他们不理解的那一半可能会如何影响事物=]

于 2013-07-03T14:42:14.197 回答