2008-11-17 5 views
4

dire que j'ai une bibliothèque asynchrone, écrit en C++ natif, avec une interface similaire à celle-ci:boost :: Emballage signal C# délégués

class connection { 
public: 
    boost::signal< void() > sig_connection_made; 
    boost::signal< void(const std::string&) > sig_error; 

    void connect(const std::string& host, const std::string& port); 
}; 

que je veux envelopper dans C#. Est-ce que quelqu'un connaît un moyen, en utilisant SWIG ou quelque chose de similaire, qui me permettra de lier les signaux aux délégués C#?

Répondre

1

Vous pouvez passer un délégué en C++ à partir de C# en utilisant SWIG, l'affecter à un pointeur de fonction, puis appeler le pointeur de fonction et déclencher le délégué.

1

Cela ressemble à une tâche pour C++/CLI.

Voir aussi Mixed Assemblies et Calling Native Functions from Managed Code.

+0

Pas aussi simple que je l'aurais aimé, mais ça ne l'est jamais :). Je vais certainement y regarder et voir si je peux écrire un wrapper intermédiaire en C++/CLI qui fait la traduction nécessaire. – Mic

+1

En effet. Mais c'est l'un des plus gros problèmes de .NET: l'intégrer à tout le reste. Bonne chance à toi! –