2013-04-04 47 views
1

我必須使用在C#中的C++ DLL和我在我的C#程序導入在C這個函數++ DLL:C#馬沙爾常量性病::名單<object>從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; 
}; 

臨屋很多!

回答

3

託管C#代碼無法使用非託管C++對象,如std::list。所以你不能直接使用來自C#的非託管DLL。

最簡單的解決方案是製作一個C++/CLI層,使其能夠適應未受管理的環境。

另一種選擇是修改未映射的代碼,使其可以用p/invoke調用,但我認爲這將比C++/CLI牽涉更多的努力。

+0

非常感謝David!我將創建一個C++/CLI層。 – LukeT 2013-04-04 14:39:21