使用qt进行64位com控制

时间:2014-11-09 20:42:21

标签: c++ qt

我想从我目前使用Qt框架编写的源代码制作ActiveX,并将其作为COM控件添加到visual studio并在C#中使用它。我用Qt 4.8.6和Visual Studio 2010完成了它并且它工作了。但是当我在visual studio中将目标机器更改为64位时,它不再有效。我发现它使用32位dll编译,我必须用64位dll编译它之后我编译Qt 4.8.6 for VS 2012 64位并且我用64位dll成功编译它并且我注册它 - 它寄存器成功,但当我尝试将其添加为COM控件时,它给了我这个错误: 自我注册D:.....。dll faild。 我该如何解决这个问题?我用qt 5.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);
..............

0 个答案:

没有答案