在Qt中创建COM对象



我试图创建一个COM对象,并从Qt中的对象获取接口。因此,Qt充当COM客户端。在我的示例中,COM服务器是CANoe COM服务器。

这是我的Qtpro文件和我的interface.cpp文件的源代码,我试图在其中建立与CANoe:的连接

专业文件:

# Add more folders to ship with the application, here
folder_01.source = qml/3com_interface
folder_01.target = qml
DEPLOYMENTFOLDERS = folder_01
# Additional import path used to resolve QML modules in Creator's code model
QML_IMPORT_PATH =
# If your application uses the Qt Mobility libraries, uncomment the following
# lines and add the respective components to the MOBILITY variable.
# CONFIG += mobility
# MOBILITY +=
# The .cpp file which was generated for your project. Feel free to hack it.
SOURCES += main.cpp 
    interface.cpp
# Installation path
# target.path =
# Please do not modify the following two lines. Required for deployment.
include(qtquick2applicationviewer/qtquick2applicationviewer.pri)
qtcAddDeployment()
HEADERS += 
    CANoe.h 
    interface.h
CONFIG += qaxcontainer

接口.cpp

#include "interface.h"
#include <QDebug>
#include "objbase.h"
#include "CANoe.h"
#include "windows.h"
#include "winnls.h"
#include "shobjidl.h"
#include "objidl.h"
#include "shlguid.h"
#include "strsafe.h"

Interface::Interface(QObject *parent) :
    QObject(parent)
{
}
void Interface::trigger_slot(const QString &msg)
{

    IApplication* pIApp;
    HRESULT result;
    result = CoInitialize(NULL);
    CLSID clsid;
    result = CLSIDFromProgID(L"CANoe.Application", &clsid);
    if(SUCCEEDED(result))
    {
        qDebug() << "CLSID saved";
    }
    const IID IID_IApplication = __uuidof(IApplication);
    result = CoCreateInstance(clsid, NULL, CLSCTX_LOCAL_SERVER, IID_IApplication, (void**) &pIApp);
    if(SUCCEEDED(result))
    {
        qDebug() << "Connection established";
    }
}

当我尝试构建程序时,我会得到以下错误代码:未定义对'_GUID常量&amp_mingw_uuidof()'

有人知道如何在Qt和COM服务器之间创建COM接口吗?我在网上搜索了好几个小时,却找不到任何解释。仅用于使用ATL通过Visual Studio访问COM服务器。但是我不能在Qt中使用ATL。

__uuid是获取COM类的GUID的一种方便方法,但任何其他方法也可以。除此之外,您的代码应该可以工作。

错误消息看起来像是MinGW链接错误(没有足够的信息来确定),表明您错过了MinGW COM库。

相关内容

  • 没有找到相关文章

最新更新