问题情况
在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;//父窗口句柄或出错时显示错误父窗口的句柄,可以为 NULLLPCTSTR lpVerb;//指定该函数的执行动作LPCTSTR lpFile;//操作对象路径LPCTSTR lpParameters;//执行参数,可以为 ULLLPCTSTR lpDirectory;//工作目录,可以为 NULLint 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