Я пытаюсь перенести некоторые функции с моего движка с c ++ на C #.
Я компилирую свой движок как dll с неуправляемым c ++ и использую только внешние функции "C" в оболочке C #.
У меня есть различные функции, которые принимают и возвращают Vector3df
. Это определяется как
typedef Vector3d<f32> Vector3df;
и f32
на самом деле float
. Сам класс не имеет ничего, кроме некоторых членов с именами x y и z и множества методов.
Я могу переписать весь класс в C #, это не проблема, но есть ли в любом случае совпадение 2?
Давайте возьмем для примера следующие функции:
extern "C" void SetColor(Vector3df color)
extern "C" Vector3df GetColor()
Я хотел бы иметь что-то подобное в C #:
[DllImport("Engine.dll", EntryPoint = "SetColor", CallingConvention = CallingConvention.Cdecl)]
static extern void SetColor(Vector3df color);
[DllImport("Engine.dll", EntryPoint = "GetColor", CallingConvention = CallingConvention.Cdecl)]
static extern Vector3df GetColor();
Есть ли какой-нибудь способ, которым я мог бы сделать код, похожий на эту работу?
Обратите внимание, что я ни в коем случае не гуру C #. Я заблудился, когда дело доходит до маршалинга. В основном я делаю это, чтобы создать редактор карт для моей игры, не изучая Qt или wxWidgets.
Спасибо!