C#调用C++Dll里的形参如何转换
调用别人的Dll不知道C++里的参数在C#里面的类型很着急extern"C"DLL_APIint_stdcallWrapperGMArithmetic(char*str,...
调用别人的Dll不知道C++里的参数在C#里面的类型很着急
extern "C" DLL_API int _stdcall WrapperGMArithmetic(char* str, char * str2, char * str3)
char xml[232342];
std::string str1 = "<parameters><parameter name=\"parameter4\" type=\"list\"><item>4</item><item>3</item><item>2</item><item>1</item></parameter> "
"<parameter name=\"parameter15\" type=\"list\"><item>16</item></parameter></parameters>";
WrapperGMArithmetic((char*)str1.c_str(), "bbb", xml);
printf("%s \n", xml);
system("pause");
我要怎样把这个WrapperGMArithmetic()里面的参数类型转换成C#里的参数 展开
extern "C" DLL_API int _stdcall WrapperGMArithmetic(char* str, char * str2, char * str3)
char xml[232342];
std::string str1 = "<parameters><parameter name=\"parameter4\" type=\"list\"><item>4</item><item>3</item><item>2</item><item>1</item></parameter> "
"<parameter name=\"parameter15\" type=\"list\"><item>16</item></parameter></parameters>";
WrapperGMArithmetic((char*)str1.c_str(), "bbb", xml);
printf("%s \n", xml);
system("pause");
我要怎样把这个WrapperGMArithmetic()里面的参数类型转换成C#里的参数 展开
展开全部
CHAR* 可以先实例化一个StringBuilder然后可以传给char*类型
关于其他的请参考msdn中的c++与c#的类型转换
对应关系如下:
C++ ---- C#
传入的char* ----string
传出的char* ---- StringBuilder(预分配空间)
short ----short
char ---- byte
char[n] ---- fixed byte[n]
结构指针 ----结构指针
函数指针 ---- 委托
里面涉及到函数指针,在C#里面用委托替代,总的代码如下:
delegate int pfunc(void* dst,void* src,int nSize);
unsafe public struct MyStruct
{
public Byte* pMemory;//也可以用unsinged int替代(uint*)
public pfunc myfunc;//这里用委托替代函数指针
public char[] rd;//声明的时候不能指定大小,可以在new的时候指定大小
}
追问
第一个参数数传入的 我要用string 是吧 第三是输出的用StringBuilder?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询