关于字符结束符
大家好,我想问一下,我用bcb给c#的dll传参数时,c#中定义的是string,
当我传过去的字符型,在c#中就多了一个\0
如我在bcb中写的入参是 "123" ,到了c#中就变成了"123\0"
现在是我们不能改c#的程序
只能改bcb的程序,不知有没有办法让c#中的显示变为"123"
[解决办法]
好奇怪的需求。那就用BYTE *吧,不要用char *了
char sz[] = "123";int nCharLen = strlen(sz);BYTE *bt = new BYTE[nCharLen];memcpy(bt, sz, nCharLen);// 把bt作为参数付给那个dll...// 最后清场delete []bt;
[解决办法]
你先试试这样:
BSTR str = SysAllocString(L"helloworld");
...把str传入到C#里
SysFreeString(str);
如果测试确信还多了一个\0的话,就这样硬改一下:
BSTR str = SysAllocString(L"helloworld");
LPDWORD pLen = LPDWORD(str)-1;
*pLen-=2; // 减去一位长度
...把str传入到C#里
SysFreeString(str);