在 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
我想请教如何从 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