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

Process the result of C++ .dll call in C#

我想请教如何从 C# 调用 C++ .dll 和 process/share 结果 C#

假设我有一个调用,例如 processFile 其中 returns 一个名为 ResultDetails 的结构。鉴于我使用 CMake 并且最好使用 mingw-gcc,我如何 share/use 在 C# 中使用 object。

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

中读取

示例 c++ header

ResultDetails* processFile(char *filePath);

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

任何想法表示赞赏, 感谢您的耐心等待

实际上,它看起来像是 .NET 问题。如果你把你的库变成一个 CLR 项目(即将它编译为一个混合程序集),你可以很容易地(或多或少)将你的结构包装在一个 .NET 中,这反过来将可供任何使用它的 C# 客户端使用.

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