在QT使用:ShellExecuteEx时遇上这么一个错误:遇上这么一个错误:
error: LNK2019: 无法解析的外部符号 __imp_ShellExecuteExW
*ReportService.obj👎 error: LNK2019: 无法解析的外部符号 __imp_ShellExecuteExW,该符号在函数 " 中被引用…
配置Lib:
在项目pro文件上加上这句即可:
即:
#shellapi
LIBS += -L"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\x64" -lShell32
知道:
#include <ShlObj.h>
BOOL ShellExecuteEx(
_Inout_ SHELLEXECUTEINFO *pExecInfo
);
SHELLEXECUTEINFO参数说明:
typedef struct _SHELLEXECUTEINFO {
DWORD cbSize;//结构大小,sizeof(SHELLEXECUTEINFO)
ULONG fMask;//指定结构成员的有效性
HWND hwnd;//父窗口句柄或出错时显示错误父窗口的句柄,可以为 NULL
LPCTSTR lpVerb;//指定该函数的执行动作
LPCTSTR lpFile;//操作对象路径
LPCTSTR lpParameters;//执行参数,可以为 ULL
LPCTSTR lpDirectory;//工作目录,可以为 NULL
int nShow;//显示方式
HINSTANCE hInstApp;//如果设置了 SEE_MASK_NOCLOSEPROCESS ,并且调用成功则该值大于32,调用失败者被设置错误值
LPVOID lpIDList;//ITEMIDLIST结构的地址,存储成员的特别标识符,当fMask不包括SEE_MASK_IDLIST或SEE_MASK_INVOKEIDLIST时该项被忽略
LPCTSTR lpClass;//指明文件类别的名字或GUID,当fMask不包括SEE_MASK_CLASSNAME时该项被忽略
HKEY hkeyClass;//获得已在系统注册的文件类型的Handle,当fMask不包括SEE_MASK_HOTKEY时该项被忽略
DWORD dwHotKey;//程序的热键关联,低位存储虚拟关键码(Key Code),高位存储修改标志位(HOTKEYF_),当fmask不包括SEE_MASK_HOTKEY时该项被忽略
union {
HANDLE hIcon;//取得对应文件类型的图标的Handle,当fMask不包括SEE_MASK_ICON时该项被忽略
HANDLE hMonitor;//将文档显示在显示器上的Handle,当fMask不包括SEE_MASK_HMONITOR时该项被忽略
} DUMMYUNIONNAME;
HANDLE hProcess;//指向新启动的程序的句柄。若fMask不设为SEE_MASK_NOCLOSEPROCESS则该项值为NULL。
//但若程序没有启动,即使fMask设为SEE_MASK_NOCLOSEPROCESS,该值也仍为NULL。
//如果没有新创建进程,也会为空
} SHELLEXECUTEINFO, *LPSHELLEXECUTEINFO;
来自这个库就可以了:C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\x64\Shell32.Lib