gpt4 book ai didi

c++ - 实现COM接口(interface) C++/VC++ 6.0/MFC

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:34:48 38 4
gpt4 key购买 nike

尝试实现 COM 接口(interface)的入门级程序员。我正在开发一个与 Aloha 销售点系统接口(interface)的程序。 Aloha 使用 COM 来处理外部程序。我正在尝试从磁卡读卡器拦截卡数据,它是一个 OPOS 读卡器,而不是键盘楔。我的文档没有解释如何实现这个特定的接口(interface),但它确实解释了如何实现类似的接口(interface)。我试图遵循这个例子,但我一无所获。 Aloha 的支持不存在,他们的文档很差、过时,有时甚至是错误的,即使我已经支付了许可证。

我试图制作一个简单的应用程序来测试此功能。这是我所做的:

1) 使用 ATL COM 应用程序向导在 vc++ 6.0 中创建一个新项目2)服务器类型dll3) 插入新的 atl 对象 -> 简单对象4)右键单击我的新类并选择实现接口(interface)5) 浏览类型库,选择 Iber.tlb (Aloha's tlb)6) 选择我要实现的接口(interface)

这生成了 .h、.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 是指向我使用上述向导创建的接口(interface)类的指针。

当我尝试注册时,我得到以下 HRESULT:0x80040112那是“未经许可使用的类别”。

这是否意味着我的程序没有进行必要的注册表项?

最佳答案

这可能意味着在他们的自定义类工厂创建该类的实例之前,您必须安装一个许可证。您是否尝试过在具有使用许可的磁卡刷卡的完全正常工作的 POS 系统上运行您的程序?也许您需要其他许可才能执行此类操作?

如果是class没有注册的问题,结果就是“class not registered”。听起来您已经通过向导完成了必要的步骤来实现接口(interface)并让它生成正确的注册表项。

关于c++ - 实现COM接口(interface) C++/VC++ 6.0/MFC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6600222/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com