Не могу сделать 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, отзовитесь!
Виртуальный выделенный сервер (VDS) становится отличным выбором
Разбираюсь со свойствами зависимостиКак я понял, что бы создать свойство зависимости необходимо проделать следующие шаги (сейчас буду их сравнивать...
Доброго времени суток! При написании подсистемы тестирования пользовательских решений задач по программированию столкнулся с такой проблемой: