问题描述
我有一个C ++ dll,其中的一个函数将std::vector<UInt16>
作为参数。我想在C#应用程序中使用此API,但不确定是否可行。
我的C ++函数:
EXPORT_API void STACKMODE ConfigurationStream(InterfaceManager * inst,std::vector<UInt16> address,std::vector <UInt16> data);
是否可以通过某种方式从C#发送列表或数组,或者我应该将API调用更改为具有两个带有额外int
参数作为数组大小的数组。请注意,两个向量的大小将始终相同。
解决方法
您不能直接执行此操作,因为dotnet框架中没有任何东西可以准确地存储std :: vector的内存布局。 但是,如果您将API更改为(按您所问的问题),则可以这样做:
EXPORT_API void STACKMODE ConfigurationStream(
InterfaceManager * inst,uint16_t* addressPtr,uint16_t* dataPtr,int32_t cnt
);