标签: c++-cli

如何将 array<unsigned char> 转换为 unsigned char[]?

在 CLR 项目中,我将 AesManaged 类的输出作为 16 字节数组

array<unsigned char>^ result = msEncrypt->ToArray();
Run Code Online (Sandbox Code Playgroud)

但是我需要将其转换为像这样定义的 unsigned char 类型的数组

unsigned char buff[16];
Run Code Online (Sandbox Code Playgroud)

编辑:我确实尝试过这个,但它给出了错误(没有带有这些参数的方法签名,尽管有一个)

System::Runtime::InteropServices::Marshal::Copy(result, 0, buff, 16);
Run Code Online (Sandbox Code Playgroud)

和这个

buff = reinterpret_cast<unsigned char>(&result);
Run Code Online (Sandbox Code Playgroud)

但错误是表达式必须是可修改的左值

clr c++-cli

2
推荐指数
1
解决办法
2976
查看次数

cli C++ 对某个属性的对象列表进行排序

我只想对某个属性的列表进行排序。

我有一个LinePiece具有以下属性的对象:

String^ Type;
int X, Y, X2, Y2;
System::String^ Text;
Run Code Online (Sandbox Code Playgroud)

现在我有一个包含这些的列表LinePieces,我想对它们进行排序X value

我发现了一些东西,List->Sort();但我需要提供一些信息。但我不知道如何告诉它根据 X 值对列表进行排序。

那么如何根据对象的 X 值对列表进行排序呢?

sorting c++-cli object

2
推荐指数
1
解决办法
1452
查看次数

C++CLI 是否经过优化?

如果我用 C++CLI/托管 C++ 编写程序,编译器是否会执行任何优化?

我知道对于C#来说,有一些优化是在编译时完成的,其中大多数优化是由JIT完成的。C++CLI 也是如此吗?

类似的问题:对于 C++CLI,我可以做相当于 -O2 标志的操作吗?我已经知道“-c Release”标志,但我不清楚它做了什么样的优化。

谢谢!

clr optimization jit c++-cli

2
推荐指数
1
解决办法
533
查看次数

如何将System :: IntPtr转换为char*

可以任何正文告诉如何在托管c ++中将System :: IntPtr转换为char*这是我的主要功能

int main(void) 
{
    String* strMessage = "Hello world";

    CManagedClass* pCManagedClass = new CManagedClass();//working
    pCManagedClass->ShowMessage(strMessage);//working


****above said error here***    
       char* szMessage = (char*)Marshal::StringToHGlobalAnsi(strMessage);
    CUnmanagedClass cUnmanagedClass; cUnmanagedClass.ShowMessageBox(szMessage);
    Marshal::FreeHGlobal((int)szMessage);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

提前致谢

c++-cli

1
推荐指数
1
解决办法
1万
查看次数

如何在C++/CLI中覆盖<和>?

我移植它实现了一个类IEquatable<T>IComparable<T>和重写==,!=,<>从C#转换成C++/CLI.到目前为止,我有:

标题:

virtual bool Equals(Thing other);
virtual int CompareTo(Thing other);

static bool operator == (Thing tc1, Thing tc2);
static bool operator != (Thing tc1, Thing tc2);
static bool operator > (Thing tc1, Thing tc2);
static bool operator < (Thing tc1, Thing tc2);
Run Code Online (Sandbox Code Playgroud)

源文件:

bool Thing ::Equals(Thing other)
{
    // tests equality here
}

int Thing ::CompareTo(Thing other)
{
    if (this > other) // Error here
        return 1;
    else …
Run Code Online (Sandbox Code Playgroud)

c++-cli operator-overloading

1
推荐指数
1
解决办法
1197
查看次数

面向对象编程 - 需要你的帮助

我尝试实现一个小游戏项目,深入研究OO编程(winforms c ++/cli).我已经开始编码,但现在我想重新设计.游戏开始时应该包括游戏引擎,用户界面,高分和游乐场四个部分.下面是一个小的(不符合UML的)类图,以显示我的目的

类图

这是正确的方法吗?在我看来,游戏引擎负责控制游戏序列(状态机?)并在所有其他类之间交换信息.

我感谢任何帮助!

编辑:

所以这是一个非常简单的游戏,没什么大不了的!这是我现在所做的一个链接:http: //www.file-upload.net/download-2595287/conways_project.exe.html (没有病毒:)但我猜你需要.NET框架才能让它运行起来)

oop c++-cli

1
推荐指数
1
解决办法
496
查看次数

C++/CLI - 从某些名称空间引用静态方法的语法

我想在某些命名空间中从某个类执行静态方法,但是我将它用作方法参数时遇到问题.

例:

让我们说有一个类:

namespace ExampleNamespace {
        public ref class A
        {
        public:
            static int MethodA();
        };
}
Run Code Online (Sandbox Code Playgroud)

我想在其他命名空间中使用MethodA作为另一个方法参数:

方法b(方法a());

我能让它发挥作用的唯一方法就是这样写:

ExampleNamespace::A^ a;
MethodB(a->MethodA());
Run Code Online (Sandbox Code Playgroud)

有没有办法在没有'a'声明的情况下编写它?就像是

MethodB(ExampleNamespace::A->MethodA()) 
Run Code Online (Sandbox Code Playgroud)

不会工作......

先感谢您.

static static-methods namespaces c++-cli

1
推荐指数
1
解决办法
3787
查看次数

在CLI中复制构造函数和赋值运算符

我正在尝试在C++/CLI中找到赋值运算符和复制构造函数的示例.我花了很多时间在谷歌上,令人惊讶的是我找不到一个看似很常见的好东西的例子.

c++-cli

1
推荐指数
1
解决办法
7519
查看次数

如何制作System :: Windows :: Forms :: Checkbox ^的矢量/数组

无法找到这个问题的任何答案,甚至没有任何问题.所以我正在尝试做的是一个std :: vector,也许只是一个普通数组的Checkboxes.

std::vector< System::Windows::Forms::CheckBox^ >m_items;
m_items.push_back( myCheckbox );
Run Code Online (Sandbox Code Playgroud)

这就是我现在所拥有的,而且显然不起作用.那么有没有人有任何想法,如何让它工作,因为我已尽我所能,但矢量似乎不支持复选框.

如果您需要错误代码:

c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xmemory(200): error C3699: '&&' : cannot use this indirection on type 'System::Windows::Forms::CheckBox ^'
1>          c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\vector(421) : see reference to class template instantiation 'std::allocator<_Ty>' being compiled
1>          with
1>          [
1>              _Ty=System::Windows::Forms::CheckBox ^
1>          ]
1>          c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\vector(481) : see reference to class template instantiation 'std::_Vector_val<_Ty,_Alloc>' being compiled
1>          with
1>          [
1>              _Ty=System::Windows::Forms::CheckBox ^,
1> …
Run Code Online (Sandbox Code Playgroud)

windows arrays checkbox c++-cli vector

1
推荐指数
1
解决办法
3974
查看次数

如何在C++/CLI中使用C#Enum

我有一个包含枚举的C#程序集:

public enum MyEnum
{
    OK = 0, 
    NOT_OK = -1
}
Run Code Online (Sandbox Code Playgroud)

我已经添加了对C++/CLI项目的引用,但我不知道如何从函数返回值.

标题:

#pragma once

using namespace System;
using namespace MyNamespace;

namespace NativeWrapper {

    public ref class API
    {
        public:
            static MyNamespace::MyEnum Go();
    };

}
Run Code Online (Sandbox Code Playgroud)

CPP:

#include "StdAfx.h"
#include "API.h"

using namespace NativeWrapper;

MyNamespace::MyEnum API::Go()
{
    return MyEnum.OK;
}
Run Code Online (Sandbox Code Playgroud)

我在构建项目时得到以下内容:

error C2275: 'MyNamespace::MyEnum' : illegal use of this type as an expression

c# c++-cli

1
推荐指数
1
解决办法
3651
查看次数