• 5941阅读
  • 5回复

请教一个动态库调用的问题[s:8] [s:8] [s:8] [s:6] [s:6] [s:6] [复制链接]

上一主题 下一主题
离线wrj_123
 
只看楼主 倒序阅读 楼主  发表于: 2006-09-18
qt调用动态库时是否可以调用一个类的方法,如自定义了基于QWidget的CWidget类,该类有一方法为show();是否可以调用CWidget::show();如果可以的话怎么调用,如果不可以的话我应该怎么做才能够显示自定义的CWidget类所定义的界面,我在作的过程中是写了一个接口函数;以下是我的一个小例子:
/////////////////////////////////////////////////////////////////////////////////
widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <qwidget.h>

class CWidget : public QWidget;
{
public:
  CWidget(QWidget * parent = 0);
}
#endif
/////////////////////////////////////////////////////////////////////////////////1
widget.cpp

#include <QtGui>
#include "widget.h"

CWidget::CWidget(QWidget * parent):QWidget(QWidget)
{
QLabel * label1 = new QLabel("label1");
QLabel * label2 = new QLabel("label2");
QLayout * layout = new QLayout;
layout->addWidget(label1);
layout->addWidget(label2);
setLayout(layout);
}

///////////////////////////////////////////////////////////////////////////////////
example.h

extern int showwidget();

///////////////////////////////////////////////////////////////////////////////////
int showwidget()
{
  CWidget widget;
  widget.show();
  return 1;
}
//////////////////////////////////////////////////////////////////////////////////
生成了libexample.so;
调用动态库

#include <streamio.h>
#include <dlfcn.h>
#include example.h

typedef int (* SHOWWIDGET)();
int main(int argc,char * argc[])
{
void * _dll = NULL;
SHOWWIDGET widget;
_dll = dlopen("libexample.so",RTLD_LAZY);
if(dlerror() != NULL)
{
  printf("dll open error \n");
  return;
}
  widget = (SHOWWIDGET)dlsym(_dll,"showwidget");
if(dlerror() != NULL)
{
  printf("dll sym error \n");
  widget = NULL;
  return;
}
widget();
return 1;
}


调用该动态库,其结果是仅仅闪了一下,该界面不能够停留显示请问!各位大虾给看一下!
[ 此贴被XChinux在2006-09-19 00:00重新编辑 ]
离线myer

只看该作者 1楼 发表于: 2006-09-18
int showwidget()
{
CWidget widget;   //此处是局部变量
widget.show();
return 1;
}                     //函数执行完,widget就被析构了,所以能看见闪一下还是不错的:)
http://user.qzone.qq.com/56430808
离线cocalele
只看该作者 2楼 发表于: 2006-09-18
说明机器速度比较慢,还能闪一下
离线wrj_123
只看该作者 3楼 发表于: 2006-09-22
那应该怎么作呀?还望指导!
离线wjfree
只看该作者 4楼 发表于: 2006-09-23
要用QApplication类,进入事件循环,具体的看看文档
离线yxr52051801
只看该作者 5楼 发表于: 2008-06-30
Re:请教一个动态库调用的问题[s:8]  [s:8]  [s:8]  [s:6]  [s:6]  [s:6]
我现在也碰到这个问题了 就是做好的界面 生成库 让想让界面显示 可是没有反应 请问这个问题怎么解决?谢谢
快速回复
限100 字节
 
上一个 下一个