c#mashal const std :: list <object> from c ++ dll </object>

时间:2013-04-04 10:55:56

标签: c# c++ marshalling dllimport

我必须在c#中使用c ++ DLL,我必须在我的c#程序中导入这个在c ++ DLL中定义的函数:

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

我如何在c#

中“翻译”
const std::list <skillset_info>

其中skillset_info在c ++ dll中定义了以下结构:

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

非常感谢!

1 个答案:

答案 0 :(得分:3)

托管C#代码不能使用像std::list这样的非托管C ++对象。所以你不能直接从C#使用非托管DLL。

最简单的解决方案是使C ++ / CLI层适应从未损坏到托管。

另一种选择是调整未损坏的代码,使其可以使用p / invoke进行调用,但我认为这比C ++ / CLI需要更多的努力。