C#/VC调用QT控件

来源:互联网 发布:git for mac 客户端 编辑:程序博客网 时间:2024/06/06 13:48

通过QT Creator将QT控件编译成C++库,即dll,C#和VC通过dll调用QT控件。

需要在QT Creator中使用qtwinmigrate,将qt控件封装为一个函数接口,通过Pinvoke与C#和VC交互。
注意:函数接口中不能出现以下语句

QApplication a(argc, argv);

qtwinmigrate在生成dll的过程中会预先定义一个QApplication 对象,而qt只允许一个QApplication 对象存在。如果这样做,运行dll时会报错:

ASSERT failure in QCoreApplication: "there should be only one application object", file kernel\qcoreapplication.cpp

应该这样做:

QApplication* qapp_instance = qApp;

在dll中定义一个全局的QApplication对象指针,指向全局的qApp(在qapplication.h源码中定义),通过这个对象指针访问QApplication对象,如进行以下操作:

qapp_instance->exec();

调用qt控件dll时,需要附带qt的dll

0 0