我想从我目前使用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);
..............