【发布时间】:2011-10-25 01:36:30
【问题描述】:
如何编组从 C++ dll 导出的字符串向量?我希望在我的 C# 程序中使用它们之前将它们分开。你能帮帮我吗?
【问题讨论】:
-
不能,C++ 对象不能直接在 C# 程序中使用。它们甚至不能在用不同编译器编译的另一个 C++ 程序中使用。 C++ 没有二进制标准。您需要使用 C++/CLI 语言编写的胶水代码来转换它们。一种知道如何编译本机 C++ 和托管代码的语言。
-
或者你可以导出一个使用
char*数组而不是向量的函数。 -
@Hans C# 有
MarshallAsAttribute... -
@ColeJohnson:很多结构都可以——至少 C++11 有一些关于所谓的“标准布局”结构的规则,这使得编组和编组更简单一些。使用结构/类的内容。但是,为了应用这些规则,您必须避免使类变得有用的许多因素,而不仅仅是原始数据的分组。如果您的类型使用
virtual,具有引用类型或非标准布局类型字段,在继承链中的多个类中定义了成员,或者具有与其他字段不同的访问控制,那么您就是回到 IB 领域(或更糟)。