[英]Accessing C++ class enum values from C#
我正在嘗試從C#訪問C ++類頭(.h)中的枚舉。 有一個簡單的方法嗎? 我見過的每個示例都涉及將類編譯成.dll,對於該示例而言,這是一種浪費,因為此類的功能非常有限。
根據要求編輯:可以修改C ++庫。 實際上,C ++庫是項目(固件)的主要組成部分,是由我團隊的其他成員開發的,C#(我的部分)僅用於單元測試。
實際上,您有三個選擇:
extern "C"
)並返回您感興趣的枚舉值,然后從C#中P /調用此庫。 為了訪問C ++枚舉,您必須將C ++類轉換為.NET可以識別的內容,這意味着將其編譯為C ++ / CLI(如果可以選擇)或轉換為.NET互操作性可以的DLL。訪問。
好吧,這讓CS預編譯器有些吃驚,但它建立了:
#if CSHARP
namespace Test
{
public enum SharedEnum
#endif //CSHARP
#if CPP
typedef enum SharedEnum
#endif //CPP
{
One,
Two,
Three
}
#if CPP
SharedEnum
#endif //CPP
;
#if CSHARP
};
#endif
只需將條件編譯符號CSHARP
添加到您的C#項目中,將現有的.cs文件和預處理器定義CPP
到您的C ++項目中。
(由於具有相同的想法而致謝Yakk)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.