在 C# 和非托管 C++ 之间传递自定义对象
我有一个旧版 DLL,其中包含一些我需要从 C# 代码调用的方法。 其中一个方法接受指向另一个 C++ 类的指针,该类存在于其他 C++ 程序中,而不是 DLL 中。
我很确定我需要使用 pinvoke 来回编组对象,但我还没有找到任何有关编组自定义对象的内容。
实现这一目标的最佳方法是什么?
I have a legacy DLL which contains a couple of methods I need to call from C# code. One of these methods takes in a pointer to another C++ class that lives within other C++ programs, not the DLL.
I'm pretty sure I need to use pinvoke to marshal the objects back and forth, but I haven't found anything on marshaling custom objects.
What would be the best way of accomplishing this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
你确定这是一个类而不是一个结构体? 毕竟,不同的编译器可以选择在内存中以不同的方式布置类,这会破坏目标 DLL。
您是否考虑过使用托管 C++ 包装器?
Are you sure it's a class and not a struct? After all, different compilers could choose to lay the class out differently in memory which would break the target DLL.
Have you considered using a Managed C++ wrapper?
我会考虑 C++/CLI,尽管 COM 互操作可能更容易,具体取决于 C++ 代码的形状。
I'd look at C++/CLI although COM interop may be easier depending on the shape of your C++ code.
如果只是使用 swig 的几种方法
if its just a few methods use swig