C#使用C ++ dll中的函数,将std :: vector作为参数

问题描述

我有一个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
);

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...