Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将指针作为参数传递给COM对象中的函数?_C++_Qt_Dll - Fatal编程技术网

C++ 如何将指针作为参数传递给COM对象中的函数?

C++ 如何将指针作为参数传递给COM对象中的函数?,c++,qt,dll,C++,Qt,Dll,我有错误 QVariant::QVariant(void*)是私有的 怎么回事? 我使用Qt 4.8.4在ru.stackoverflow上回答,只是翻译我的答案 根据QAxBase::dynamicCall()的文档,它接受函数参数为constqvariant&。编译器不知道如何将long*转换为QVariant(QVariant类没有相应的方法)。可能的解决办法: 请尝试QAxBase::generateDocumentation()。可能有一个类似的函数不使用指针 在QVariant中通过

我有错误

QVariant::QVariant(void*)是私有的

怎么回事?
我使用Qt 4.8.4在ru.stackoverflow上回答,只是翻译我的答案

根据
QAxBase::dynamicCall()
的文档,它接受函数参数为
constqvariant&
。编译器不知道如何将
long*
转换为
QVariant
QVariant
类没有相应的方法)。可能的解决办法:

  • 请尝试
    QAxBase::generateDocumentation()
    。可能有一个类似的函数不使用指针
  • QVariant
    中通过
    long*
  • 使用
    queryInterface()
    并直接调用该函数
  • 虽然案例1相对清晰,但案例2在以下示例代码中进行了描述:

    Adaptor->dynamicCall("GetWPlace(long, long*, long*, BSTR*)", i, &DevplaceId,&DevplaceNum,&WPComments);
    
    #包括
    #包括
    #包括
    int main(int argc,char*argv[])
    {
    qcorea应用程序(argc、argv);
    长挖=12345;
    long*digPtr=&dig;//指针
    
    qDebug()寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现问题所需的最短代码。没有明确问题说明的问题对其他读者没有用处。请参阅:。对不起,我是frim Russia,我现在英语非常差,我想使用COM dll库。我已为此创建了QAxObject*适配器。Wh恩,我传递简单的参数,一切都很好,但我想传递指针
    #include <QCoreApplication>
    #include <QVariant>
    #include <QDebug>
    
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
    
        long dig = 12345;
        long* digPtr = &dig; // The pointer
        qDebug() << digPtr; // Check pointer value in debug
        // Convert long* to QVariant
        QVariant var = qVariantFromValue((void*) digPtr);
        // Convert QVariant в long*
        long* ptr = (long*)var.value<void *>();
        qDebug() << ptr; // Check the ponter value
    
        return a.exec();
    }