
有个这类 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
输出如下:
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)