Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.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++ 使用qt制作64位com控件_C++_Qt - Fatal编程技术网

C++ 使用qt制作64位com控件

C++ 使用qt制作64位com控件,c++,qt,C++,Qt,我想从我当前在Qt框架中编写的源代码中生成ActiveX,并将其作为COM控件添加到visual studio中,然后在C#中使用它。我已经用Qt4.8.6和VisualStudio2010完成了这项工作,并且成功了。然而,当我在VisualStudio中将目标计算机更改为64位时,它就不再工作了。我发现它是用32位dll编译的,我必须用64位dll编译它,然后我为VS 2012 64位编译了Qt 4.8.6,我成功地用64位dll编译了它,并且我注册了它-它成功注册了,但是当我尝试将它添加为C

我想从我当前在Qt框架中编写的源代码中生成ActiveX,并将其作为COM控件添加到visual studio中,然后在C#中使用它。我已经用Qt4.8.6和VisualStudio2010完成了这项工作,并且成功了。然而,当我在VisualStudio中将目标计算机更改为64位时,它就不再工作了。我发现它是用32位dll编译的,我必须用64位dll编译它,然后我为VS 2012 64位编译了Qt 4.8.6,我成功地用64位dll编译了它,并且我注册了它-它成功注册了,但是当我尝试将它添加为COM控件时,它给了我以下错误: 自动注册D:。dll失败。 我如何解决这个问题?我用Qt5.0.1编译它,结果是一样的

#ifndef OBJECTS_H
#define OBJECTS_H

#include <QWidget>
#include <QColor>
QT_BEGIN_NAMESPACE
class QVBoxLayout;
QT_END_NAMESPACE
class QSubWidget;
class CirclesGraphicsScene;
class CirclesGraphicsView;
//! [0]
class Circles : public QWidget
{
    Q_OBJECT
    Q_CLASSINFO("ClassID", "{d574a747-8016-46db-a07c-b2b4854ee75c}")
    Q_CLASSINFO("InterfaceID", "{4a30719d-d9c2-4659-9d16-67378209f822}")
    Q_CLASSINFO("EventsID", "{4a30719d-d9c2-4659-9d16-67378209f823}")
    Q_PROPERTY(QColor backgroundColor READ backgroundColor WRITE setBackgroundColor)
    Q_PROPERTY(int circleNumber READ circleNumber WRITE setCircleNumber)

    void createScene();
public:
    Circles(QWidget *parent = 0);

    QSize sizeHint() const;
    QColor backgroundColor()const;
    int circleNumber()const{return _n;}

public slots:

//--general
    void setBackgroundColor(QColor color);
    void setCircleNumber(int n);

//--axes
    //void setAxesPen(QColor color, int w , int penStyle);

//--circles
    void addCircles(int r, int n, int s, int e);
..............
\ifndef对象
#定义对象
#包括
#包括
QT_开始名称空间
类QVBoxLayout;
QT_END_名称空间
类QSubWidget;
类圆形;
类圆形图形视图;
//! [0]
类圆:公共QWidget
{
Q_对象
Q_CLASSINFO(“ClassID”,“{d574a747-8016-46db-a07c-b2b4854ee75c}”)
Q_CLASSINFO(“接口ID”,“4a30719d-d9c2-4659-9d16-67378209f822}”)
Q_CLASSINFO(“事件SID”,“4a30719d-d9c2-4659-9d16-67378209f823}”)
Q_属性(QColor backgroundColor读取backgroundColor写入setBackgroundColor)
Q_属性(int circleNumber读取circleNumber写入设置circleNumber)
void createScene();
公众:
圆圈(QWidget*parent=0);
QSize sizeHint()常量;
QColor backgroundColor()常量;
int circleNumber()常量{return\u n;}
公众时段:
//--一般的
void-setBackgroundColor(QColor颜色);
无效设置循环编号(整数n);
//--斧头
//void setAxesPen(QColor color,int w,int penStyle);
//--圈
无效添加圆(int r,int n,int s,int e);
..............