我必须在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;
};
非常感谢!
答案 0 :(得分:3)
托管C#代码不能使用像std::list
这样的非托管C ++对象。所以你不能直接从C#使用非托管DLL。
最简单的解决方案是使C ++ / CLI层适应从未损坏到托管。
另一种选择是调整未损坏的代码,使其可以使用p / invoke进行调用,但我认为这比C ++ / CLI需要更多的努力。