簡體   English   中英

將數據從C#傳遞到非托管C ++(使用COM Interop)

[英]Passing data from C# to unmanaged C++ (using COM Interop)

我正在使用Com Interop方法與非托管C ++和C#通信。

我需要將數據從C#發送到非托管C ++。

我已經從C#發送“布爾”值並通過c ++中的“ VARIANT_BOOL *”訪問它。

我需要從C#發送一個整數。 如何在非托管C ++端訪問該整數值?

例如:

C#

 public int myValue()
        {
            return 5;
        }

非托管C ++

CoInitialize(NULL);
MyNSpace::MyClassPtr IMyPointer;

 HRESULT  hRes =  IMyPointer.CreateInstance(MyNSpace::CLSID_MyClass);

if (hRes == S_OK)
{
//// ??? define x type

IMyPointer->myValue(x);

}

COM允許使用普通(本地)整數類型,例如LONG。 COM LONG在C ++中代表32位有符號整數。 例如,

HRESULT myValue([out, retval] LONG* nOutVal);

在客戶端(c ++)代碼中,您只需要聲明一個序數int變量:

if (hRes == S_OK)
{
    int x;
    hRes = IMyPointer->myValue(x);

}

暫無
暫無

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

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