在C#中处理C ++ .dll调用的结果

时间:2017-11-17 10:30:32

标签: c# c++ gcc cmake interop

我想询问您如何从C++ .dll拨打C#并使用C#处理/分享结果的指导。

假设我有一个电话,例如processFile,它返回一个名为ResultDetails的结构。如果我使用C#并且最好CMake,我如何在mingw-gcc中共享/使用此对象。

(可能我无法按原样分享对象,但是有可能以某种方式将其序列化为C#兼容格式并在C#中进行预期。(我不希望序列化结果JSON将其写入文件并从C#.))

中读取

示例c ++标题

ResultDetails* processFile(char *filePath);

struct ResultDetails {
    std::vector<std:Exception> exceptions;
    Geometry geometry;
    std::vector<Surfaces> surfaces;
}

任何想法都表示赞赏, 感谢您的时间和耐心

1 个答案:

答案 0 :(得分:0)

实际上,它看起来像.NET一样。如果您将库转换为CLR项目(即将其编译为混合程序集),您可以轻松地(或多或少)将您的结构包装在.NET中,而这反过来将可用于任何使用它的C#客户端。

我想你可以从这里开始:https://docs.microsoft.com/en-us/cpp/dotnet/mixed-native-and-managed-assemblies