QT中怎么调Linux 命令

QT中怎么调Linux 命令,第1张

有个这类 QProcess 

    QProcess p(0)

    QString command = ""

    QStringList args

    QString strTemp = ""

    QStringList tmpList

    

    /**

     * 调用 hostname 命令 获取机器名

     ================================================================ */

    QString hostname = ""

    command = "hostname"

    args.clear()

    p.start( command,args )

    p.waitForFinished()

    strTemp = QString::fromLocal8Bit( p.readAllStandardOutput() )

    hostname = strTemp.replace( "\n","").trimmed()

    qDebug()<<"hostname:"<< hostname

1、在Linux下的命令行编辑程序:

[root@localhost root]# mkdir hello

//mkdir命令创建一个hello目录

[root@localhost root]# cd hello

//cd命令切换到刚才创建的hello目录

[root@localhost hello]# vi main.cpp

//在hello目录中用vi创建一个main.cpp文件 将下面的代码输入到main.cpp文件中

#include <QApplication>

#include <QLabel>

int main(int argc,char *argv[])

{

QApplication app(argc,argv)

QLabel *label = new QLabel(“Hello Qt”)

Label->show()

return app.exec()

}

2、然后在命令行编译程序:

[root@localhost hello]# qmake –project

//执行qmake –project,因为目录是hello,因此在hello目录下生成一个与平台无关的项目文件hello.pro,

[root@localhost hello]# qmake hello.pro

//执行qmake hello.pro项目文件后,在hello目录下生成一个与平台有关的Makefile文件。

[root@localhost hello]# make

//执行make进行编译源代码,并生成main.o目标文件及hello执行文件。

[root@localhost hello]# ./hello

//执行hello,就会d出Hello Qt窗口,到此说明成功了。

先写好实现动态链接库的libmy.cpp文件和libmy.h文件,如下:

// libmy.cpp

#include"libmy.h" 

#include<iostream>

using namespace std

MyLib::MyLib() 

}

MyLib::~MyLib() 

}

void MyLib::hello() 

{     

 cout <<"hello world~!" <<endl

}

// libmy.h文件

#ifndef  LIBMY_H 

#define  LIBMY_H  

class MyLib

public:     

 MyLib()     

 ~MyLib()       

 void hello() 

#endif  /*LIBMY_H*/

然后写好pro文件,如下:

TEMPLATE = lib 

TARGET =DllTest

HEADERS += libmy.h 

SOURCES += libmy.cpp

保存关闭,文件名命名为MyDll.pro

在Shell里执行qmake MyDll.pro,在没有错误的情况下,然后执行make ,可以看到生成了几个后缀名为so的文件,如下图:

证明生成动态链接库成功。然后编写测试动态链接库的主函数,如下:

#include"libmy.h" 

#include<iostream>

using namespace std

int main(int argc,char *argv[]) 

{     

       MyLib *lib = new MyLib()       // 调用刚才编写的动态链接库

       lib->hello()         

        cout <<"danshiming " <<endl

        int i

        cin >>i

       return 1 

}

编写main.pro文件,如下:

LIBS += -L ./                               # 设置程序查找动态库的目录为当前目录

# 注意:用QT生成的动态库默认都加了lib前缀和扩展名及版本名,但调用时不用加lib,不用加文件

# 扩展名so、不用加版本名1.0.0.即下面LIBS中的DllTest就是实际的动态库libDllTest.so.1.0.0

LIBS+=-lDllTest  #注意:调用时不用加lib,不用加文件扩展名so、不用加版本名1.0.0,记得前面加l(字母)

TARGET = libMyTest

SOURCES += main.cpp

执行qmake main.pro生成makefile文件,然后执行make,可以看到生成了libMyTest可执行文件。

将动态链接库libDllTest.so.1.0.0和可执行文件传到arm板上,如下:

在arm板上执行libMyTest,如下:

# chmod +x  libMyTest    // 先赋予可执行权限

执行:

#  ./libMyTest

输出如下:


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8498895.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-17
下一篇2023-04-17

发表评论

登录后才能评论

评论列表(0条)

    保存