2013-04-04 1 views
1

Je dois utiliser un C++ DLL dans C# et je dois importer dans mon C# programme de cette fonction définie dans le C++ DLL:C# Mashal const std :: liste <object> de C++ dll

void rtdGetSkillsetListResult(bool success, const std::list <skillset_info> skillsetList) 

Comment puis-je "traduire" en C#

const std::list <skillset_info> 

où skillset_info a défini en C++ dll avec la structure suivante:

struct skillset_info 
{ 
    std::string code; 
    bool standby; 
}; 

Tha beaucoup nks!

Répondre

3

Le code C# géré ne peut pas consommer d'objets C++ non gérés tels que std::list. Vous ne pouvez donc pas utiliser la DLL non managée directement à partir de C#.

La solution la plus simple consistera à créer une couche C++/CLI qui s'adapte de non mamée à managée.

Une autre option serait d'adapter le code non mamé pour qu'il soit appelable avec p/invoke mais je pense que cela impliquerait plus d'efforts que C++/CLI.

+0

Merci beaucoup David! Je vais faire un C++/CLI Layer. – LukeT

Questions connexes