簡體   English   中英

如何有效地將 C 風格的函數(對於 Mono)綁定到 C++ 風格的類方法

[英]How to efficiently bind C-style function (for Mono) to C++ style class methods

我正在使用 Mono 將 C# 代碼綁定到 C++。 設置 Mono 域等后,您相應地綁定函數:

C++方面:

mono_add_internal_call("Camera::SetPerspectiveVerticalFOV", Camera_SetPerspectiveVerticalFOV);

float Camera_SetPerspectiveVerticalFOV(Camera *camera, float verticalFov)
{
    camera->SetPerspectiveVerticalFOV(verticalFov);
}

C#方面:

[MethodImpl(MethodImplOptions.InternalCall)]
public static extern void SetPerspectiveVerticalFOV_Engine(IntPtr cameraObject, float verticalFov);

現在,一切都在努力綁定我正在做的事情。 即在C++端創建一個包裝類,在函數參數(Camera*camera)中調用對象上的類方法。 然而,為每個單獨的構造函數/Getter/Setter 創建一個函數包裝器(和長函數名)只是為了能夠調用 C++ 端的類方法是非常乏味的。

有沒有辦法通過將類對象作為函數參數來調用 C++ 函數,例如:

Foo myFooObject;
Foo::SetBar( &myFooObject, parameter1, parameter2)

代替:

Foo myFooObject;
myFooObjcect.SetBar( paramter1, parameter2);

從那時起,我可以使用一些預處理器魔法來更輕松地解決這個問題。

也許這是一個簡單的答案,但我很難找到答案!

提前致謝

正如 Botje 建議的那樣, std::invoke是我正在尋找的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM