C++ 如何将指针作为参数传递给COM对象中的函数?
我有错误 QVariant::QVariant(void*)是私有的 怎么回事?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中通过
我使用Qt 4.8.4在ru.stackoverflow上回答,只是翻译我的答案 根据
QAxBase::dynamicCall()
的文档,它接受函数参数为constqvariant&
。编译器不知道如何将long*
转换为QVariant
(QVariant
类没有相应的方法)。可能的解决办法:
QAxBase::generateDocumentation()
。可能有一个类似的函数不使用指针李>
QVariant
中通过long*
李>
queryInterface()
并直接调用该函数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();
}