SWIG - c# - обертка для enum

217
02 июля 2017, 12:18

Не могу сделать C# обертку для enum C++ c помощью SWIG. Значение членов c++ enum, которые я хочу обернуть превосходят максимальное значение для Int32. В C# тип членов enum по умолчанию - Int32, поэтому в public enum BigNumbers { big = 0x80000000,...} я получаю ошибку компиляции cannot implicitly convert type 'uint' to 'int'. Несмотря на то, что я как мне кажется следую, инструкции, в которой описывается данная ситуация, я не могу решить проблему. Видимо, я не понимаю чего-то базового. Привожу код:

Заголовочный файл с enum, который нужно обернуть.

MyClass.h

class  MyClass
{
public:
    MyClass() {}
    ~MyClass() {}
    enum  BigNumbers
    {
        big = 0x80000000, bigger
    };
};

Интерфейсный файл SWIG:

MyClass.i

%module cpp
%{
    #include "MyClass.h"
%}
%include "MyClass.h"
%typemap(csbase) BigNumbers "uint"
%inline %{
  enum BigNumbers { big=0x80000000, bigger };
%}

В результате я имею следующую конструкцию в автоматически созданном файле MyClass.cs, которая вызывает ошибку компиляции.

MyClass.cs

  public enum BigNumbers {
    big = 0x80000000,
    bigger
  } 

и глобальный "правильный "enum c членами uint в отдельном файле:

BigNumbers.cs

public enum BigNumbers : uint {
  big = 0x80000000,
  bigger
}

хотя я ожидал увидеть его в качестве члена MyClass.

Специалисты по SWIG, отзовитесь!

READ ALSO
Aes дешифрация байтов c#

Aes дешифрация байтов c#

Пытаюсь расшифровать зашифрованные байты алгоритмом AES, c#

385
Не определяется свойство зависимости в wpf?

Не определяется свойство зависимости в wpf?

Разбираюсь со свойствами зависимостиКак я понял, что бы создать свойство зависимости необходимо проделать следующие шаги (сейчас буду их сравнивать...

271
Нанооптимизация в цикле for

Нанооптимизация в цикле for

Например, есть массив с элементами

264
Запрет на создание процессов, работы с файловой системой и интернетом

Запрет на создание процессов, работы с файловой системой и интернетом

Доброго времени суток! При написании подсистемы тестирования пользовательских решений задач по программированию столкнулся с такой проблемой:

172