我有以下函数调用:
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)
任何人都可以告诉我这是什么问题,我该如何解决?
答案 0 :(得分:1)
您可以将QProcess
用于此目的,因为它继承了QObject
和QIODevice
,您拥有在您可能正在使用的其他Qt对象之间传递数据所需的一切但是您没有不得不。您始终可以创建自己继承自QObject
的对象,然后实现信号和插槽机制,但QProcess
将使生活更轻松,因为它已经可能需要进行shell访问。但是,您遇到的问题与链接器有关,与信号和插槽机制无关。
答案 1 :(得分:0)
您很可能忘记将required windows library与您的项目相关联。尝试将其添加到.pro
文件中:
LIBS *= Shell32.lib