【问题标题】:byte array parameter in visual c++Visual C++中的字节数组参数
【发布时间】:2013-01-26 20:02:12
【问题描述】:

我是 Visual c++ 的新手。我在 .h 文件中有一个方法,如下所示:

  public:
   void DoSomething();

这里我需要将字节数组作为参数传递,我需要在 .cpp 文件中实现它。我正在使用 windows phone 8 为此我需要包含 windows phone 运行时组件的 Visual c++ 项目。我需要在 c# 类中使用此方法并从那里传递字节数组。但我不知道如何在 C++ 中声明一个字节数组方法。谁能帮我找到解决办法。

【问题讨论】:

    标签: windows-phone-8 c++-cx visual-c++-2012


    【解决方案1】:

    在 C++/CX 中,您用于运行时组件的签名将如下所示(假设您有 ref class):

    void DoSomething(const Platform::Array<uint8>^ something);

    这可以通过传入 byte[] 直接从 C# 调用。

    【讨论】:

    • 嗨,当我从 c# 打电话时它工作正常谢谢。我想在“C”中调用“Method1”(例如)方法,其参数应该是字节数组。我想从 C++ 调用这个方法。如何将“某物”参数传递给 C 中的方法。
    • 您应该能够使用 Array 上的 Data 和 Length 属性将内容传递给一些 C 代码。
    【解决方案2】:
    public:
       void DoSomething(Byte *);
    

    或者

    public:
       void DoSomething(unsigned char *);
    

    例如。

    【讨论】:

    • 谢谢你的回答。它只给出一个字节作为输出参数。但我需要这里有 ref 的字节数组。
    • 我不确定你需要什么。我可以说,如果您想要参考,只需将 * 替换为 & 如下所示:DoSomething(unsigned char &);.
    • 我想在 c# 中使用这个 dosomething 方法并将字节数组传递给它.. 但是当我在 c# 类中访问这个方法时,它除了 byte 作为输出参数,但我希望它是 byte数组中的参数..
    • 好吧,当你用引用而不是像我在上一个答案中所说的那样声明 DoSomething 时,它会改变什么吗?
    • 不,它会引发错误,因为低级指针在本机代码中不起作用。
    猜你喜欢
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多