将非托管c ++转换为托管c# [英] convert unmanaged c++ to managed c#

查看:99
本文介绍了将非托管c ++转换为托管c#的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述





我在转换dll unmanaged(c ++)byte *到managed.net(webservice)时遇到问题





例如:





hi

I have a problem in convert dll unmanaged(c++) byte * to managed.net(webservice)


Example:


STDMETHODIMP CCMSTest::Test1(BYTE* bstr)
{
        for(int i=0;i<6;i++)

        bstr[i-1]=i;


    return S_OK;
}





谁可以在managed.net(webservice)代码下使用?????????? ?????????????????



请帮帮我



who can used under code in managed.net(webservice) ???????????????????????????

Please Help me

推荐答案

请注意,即使您的C ++代码编写得很糟糕。为什么使用立即常数 6(硬编码)?你为什么不通过这个长度?如果数组中的元素数量减少怎么办?此外,对于 i = 0 ,您的代码将崩溃,因为索引将超出范围(-1)。不,这不是一个有效的代码。



在C#中,它可能是这样的:

Note that even your C++ code is badly written. Why the immediate constant 6 is used (hard-coded)? Why don''t you pass the length? What if the number of elements in the array is less? Besides, for i=0, your code will crash because the index will be out of range (-1). No, this is not a valid code.

In C#, it could be something like:
class CmsTest {
    
    static void FirstTest(byte[] data) {
        for (int index = 0; index < data.Length; ++index) {
            // do something correct with data, data[index],
            // not what is written in your invalid C++ code
        }
    }
 
}





祝你好运,

-SA


STDMETHODIMP CCMSTest::Test1(BYTE* bstr, USHORT iLen)
{
        for(int i=0;i<ilen;i++)>

        bstr[i-1]=i;


    return S_OK;
}







}



谁可以在托管网络中转换字节*非托管(webservice)

谁可以在托管网络(webservice)代码下使用?????????????? ???????????



请帮帮我




}

who can convert byte * unmanaged in managed.net(webservice)
who can used under code in managed.net(webservice) ???????????????????????????

Please Help me


这篇关于将非托管c ++转换为托管c#的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆