c++中char * 转换为c#该转成什么类型?
我要调用c++中的一个方法dc_dispinfo_T8(HANDLEidComDev,unsignedcharline,unsignedcharoffset,char*d...
我要调用c++中的一个方法 dc_dispinfo_T8(HANDLE idComDev,unsigned char line,unsigned char offset,char *data); 其中unsigned char line,unsigned char offset是不是传int就行了?最后一个参数char *data该传个什么类型? 请大家帮帮忙了,急用。谢谢,分不高,不能给太多,不好意思了。求大家帮帮忙了。
展开
6个回答
展开全部
char 是8位, int 是32位,可以传 int 但是要确保 你的 int 变成8位后没有位数损失,
char* 一般是一个 byte[] 数组,先要用 Marshal.Copy 函数将数组复制到一个 IntPtr 中,任意指针在C#中都表示为 IntPtr ,将IntPtr 传入你的方法就行
char* 一般是一个 byte[] 数组,先要用 Marshal.Copy 函数将数组复制到一个 IntPtr 中,任意指针在C#中都表示为 IntPtr ,将IntPtr 传入你的方法就行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用 void* 可以,需要的时候再转换回来 (char*)转换
举个我用过的例子
unsafe public extern static void* VirtualAlloc(void* lpAddress, int dwSize, int flAllocationType, int flProtect);
举个我用过的例子
unsafe public extern static void* VirtualAlloc(void* lpAddress, int dwSize, int flAllocationType, int flProtect);
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
c#代码
class CITICs
{
[DllImport("CITICs_HsT2Hlp.dll", EntryPoint = "_CITICs_HsHlp_BizCallAndCommit@20")]
public static extern int CITICs_HsHlp_BizCallAndCommit(IntPtr hlpHandle, int iFunc, byte szParam);
}
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
LoadConfig();
}
public void LoadConfig()
{
try
{
IntPtr hconfig = new IntPtr();
IntPtr hlpHandle = new IntPtr();
byte[] szParam = new byte[1024];
string str = "identity_type:2,op_branch_no: ,op_entrust_way:5,";
Encoding.ASCII.GetBytes(str, 0, str.Length, szParam, 0);
int iFunc=33301;
int rst = CITICs.CITICs_HsHlp_BizCallAndCommit(hlpHandle, iFunc, szParam);
int dss = rst;
}
catch (Exception ex)
{
}
}
class CITICs
{
[DllImport("CITICs_HsT2Hlp.dll", EntryPoint = "_CITICs_HsHlp_BizCallAndCommit@20")]
public static extern int CITICs_HsHlp_BizCallAndCommit(IntPtr hlpHandle, int iFunc, byte szParam);
}
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
LoadConfig();
}
public void LoadConfig()
{
try
{
IntPtr hconfig = new IntPtr();
IntPtr hlpHandle = new IntPtr();
byte[] szParam = new byte[1024];
string str = "identity_type:2,op_branch_no: ,op_entrust_way:5,";
Encoding.ASCII.GetBytes(str, 0, str.Length, szParam, 0);
int iFunc=33301;
int rst = CITICs.CITICs_HsHlp_BizCallAndCommit(hlpHandle, iFunc, szParam);
int dss = rst;
}
catch (Exception ex)
{
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
答:string
C++ 声明一个字符串有好多种方式 char* CString 等等好多 我不是搞C++的
C++ 声明一个字符串有好多种方式 char* CString 等等好多 我不是搞C++的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询