我在编写Ruby C ++扩展时遇到了一些问题。 我有一些带源代码的C ++库。它有文档这样的功能:
class MyConversation : public Conversation
{
public:
typedef DRef<MyConversation, Conversation> Ref;
typedef DRefs<MyConversation, Conversation> Refs;
MyConversation(unsigned int oid, SERootObject* root) : Conversation(oid, root) {};
void OnMessage(const MessageRef & message);
};
void MyConversation::OnMessage(const MessageRef & message)
{
// Message handling goes here
};
在函数MyConversation :: OnMessage中来自C ++库的消息。我想将此消息发送到ruby扩展名,如下所示:
void MyConversation::OnMessage(const MessageRef & message)
{
//some code catch here messages
};
在红宝石中我很简单地想要打电话:
listener = Object.new
listener.messages do |message|
# As I understand Thread.current != Thread.main
end
怎么做?我完成了从ruby调用c ++的函数,但是如何做这些我不理解的事情(我对c和c ++知之甚少)。
感谢您的帮助!