Выставить Enum в глоткеC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Выставить Enum в глотке

Сообщение Anonymous »

У меня есть проект на C++, и я использую swig для создания привязок C# и Py. Некоторые методы, которые я хочу представить, теперь требуют, чтобы они принимали перечисление C++ DependenctType в качестве аргумента.
Перечисление хранится в файле dependency.h, а остальная часть проекта может Я раскрываю это через swig, чтобы, например, в С# я мог напрямую использовать MyEnum.Value1? Я вижу, что без явного определения перечисления swig создает SWIGTYPE_p_MyEnum, но это предоставляет только базовые методы swig, а члены перечисления отсутствуют в объекте C#.
Должно ли это сработать коробка? Я могу обойти это, перегрузив методы для приема int и static_cast на стороне C++, но это несколько противоречит цели.
Я создал следующее:
depenendency.i

Код: Выделить всё

#pragma once
namespace dependencies
{
enum class DependencyType
{
None = 0,
Asset = 1,
Security = 2,
};
}
depenendency.h

Код: Выделить всё

#pragma once
namespace dependencies
{
enum class DependencyType
{
None = 0,
Asset = 1,
Security = 2,
};
}
Сборка с использованием этого параметра выдает ошибку «Невозможно найти зависимость.h»при попытке сборки. Я попытался добавить путь к файлу dependency.h и папке, содержащей его, с помощью флага -I при вызове swig, однако либо получаю ошибку:

Код: Выделить всё

No module name specified using %module or -module
или Необходимо указать входной файл.. Если я добавлю myenum_i в качестве имени модуля, я получу сообщение «Невозможно найти файл myenum.i».

Подробнее здесь: https://stackoverflow.com/questions/783 ... um-in-swig
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»