一.不包含有结构体
只通过函数参数传,遵循如下即可
1.作为输入参数转为char[],通过Encoding类对这个string[]进行编码后得到的一个char[]
2.作为输出参数转为byte[],通过Encoding类对这个byte[]进行解码,得到字符串
例子:
int __stdcall SP_GetIncrementCOMPortWithFilterTEST1(char* testarg) {
printf("testarg==%s", testarg);
return 0;
}
C#中这样定义即可
[DllImport("Dll1.dll")]
public static extern int SP_GetIncrementCOMPortWithFilterTEST2(char[] test);
二.结构体中含有char**
c++如下:
typedef struct
{
unsigned int m_uCount;
SP_FILTER_TYPE_E m_eType;
char** m_ppFilterID;
//bool* m_bInterface;
} SP_COM_FILTER_LIST_S;
int __stdcall SP_GetIncrementCOMPortWithFilterTEST(SP_COM_FILTER_LIST_S* pCOMFilter) {
std::cout << "SP_GetIncrementCOMPortWithFilterTEST success" << std::endl;
&n

本文介绍了如何在C#中调用C++ DLL时处理包含char**的数据结构。主要内容包括:1. 作为输入参数时,通过Encoding类将string[]编码为char[];2. 作为输出参数时,通过Encoding类解码byte[]得到字符串。同时展示了C++结构体SP_COM_FILTER_LIST_S的C#映射,并提供了创建和清理m_ppFilterID的方法。
1945

被折叠的 条评论
为什么被折叠?



