如何使用Qt connect函数调用Shell Execute?

时间:2015-04-08 10:03:53

标签: c++ qt

我有以下函数调用:

sparseAct =new QAction(QIcon(":Icons/icons/sparse.jpg"),tr("Sparse Reconstruction"),this);

connect(sparseAct, SIGNAL(triggered()),this, SLOT(sparsereconstruction()));

void UAVgeoreferencer::sparsereconstruction(){

ShellExecute(NULL, L"open", L"C:\\WINDOWS\\system32\\cmd.exe", L"/C C:\\Images\\sparseRecon64.bat", L"C:\\Images\\", SW_SHOWNORMAL);

}

当我这样做时,我得到如下错误:

  

uavgeoreferencer.obj:-1:错误:LNK2019:未解析的外部符号   __imp_ShellExecuteW在函数“private:void __cdecl UAVgeoreferencer :: sparsereconstruction(void)”中引用   (?sparsereconstruction @ @@ UAVgeoreferencer AEAAXXZ)

任何人都可以告诉我这是什么问题,我该如何解决?

2 个答案:

答案 0 :(得分:1)

您可以将QProcess用于此目的,因为它继承了QObjectQIODevice,您拥有在您可能正在使用的其他Qt对象之间传递数据所需的一切但是您没有不得不。您始终可以创建自己继承自QObject的对象,然后实现信号和插槽机制,但QProcess将使生活更轻松,因为它已经可能需要进行shell访问。但是,您遇到的问题与链接器有关,与信号和插槽机制无关。

答案 1 :(得分:0)

您很可能忘记将required windows library与您的项目相关联。尝试将其添加到.pro文件中:

LIBS *= Shell32.lib