簡體   English   中英

實現 COM 接口 C++ / VC++ 6.0 / MFC

[英]Implement COM interface C++ / VC++ 6.0 / MFC

入門級程序員在這里嘗試實現 COM 接口。 我正在開發一個與 Aloha 銷售點系統交互的程序。 Aloha 使用 COM 來處理外部程序。 我正在嘗試從 mag 讀卡器截取卡數據,它是 OPOS 讀卡器,而不是鍵盤楔。 我的文檔沒有解釋如何實現這個特定的接口,但它確實解釋了如何實現一個類似的接口。 我試圖遵循這個例子,但我沒有得到任何地方。 不存在來自 Aloha 的支持,他們的文檔很差、過時,有時甚至是錯誤的,即使我已經支付了許可證費用。

我試圖制作一個簡單的應用程序來測試這個功能。 這是我所做的:

1) create a new project in vc++ 6.0 using ATL COM app wizard 2) server type dll 3) insert new atl object -> simple object 4) right click on my new class and choose implement interface 5) browse for type library, chose Iber .tlb (Aloha's tlb) 6) 選擇了我要實現的接口

那發啊,.cpp和.rgs文件。

.h 文件有:

public:
// IInterceptMagcard
    STDMETHOD(InterceptMagcard)(BSTR bstrAccountNumber, BSTR bstrCustomerName, BSTR bstrExpirationDate, BSTR bstrTrack1Info, BSTR bstrTrack2Info, BSTR bstrTrack3Info, BSTR bstrRawMagcardData, LONG * bWasDataHandled)
    {
        if (bWasDataHandled == NULL)
            return E_POINTER;

        return E_NOTIMPL;
    }

那是我實現代碼的地方嗎? 我在那里放了一些測試代碼來寫出一個txt文件來測試它。 然后我用:

HRESULT hr = CoCreateInstance(CLSID_AlohaMag, NULL, CLSCTX_INPROC_SERVER,
                                IID_IAlohaMag, (void **) &g_pIInterceptMagcard);

其中 g_pIInterceptMagcard 是指向我使用上面的向導創建的接口 class 的指針。

當我嘗試注冊時,我得到以下 HRESULT:0x80040112 那是“未經許可使用的類”。

這是否意味着我的程序沒有創建必要的注冊表項?

這可能意味着您必須先安裝許可證,然后他們的自定義 class 工廠才能創建 class 的實例。 您是否嘗試在具有磁卡刷卡許可使用的完全正常工作的 POS 系統上運行您的程序? 也許你需要一些其他的許可證來做這種事情?

如果是 class 未注冊的問題,結果將是“類未注冊”。 聽起來您已經通過向導完成了必要的步驟來實現接口並讓它生成正確的注冊表項。

暫無
暫無

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

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