我正在尝试包装一个小的cpp文件,该文件获取文件的Jumbo图标。但是,当我尝试从dll目录中启动的命令行调用它并使用以下方法调用dll时,它不起作用。
from ctypes import *
lib=ctypes.cdll.LoadLibrary("GetIcon.dll")
追踪(最近一次通话):
文件"",第1行,in
文件" C:\ Python27 \ lib \ ctypes__init __。py",第443行,在LoadLibrary中
返回self._dlltype(名称)
文件" C:\ Python27 \ lib \ ctypes__init __。py",365行, init
self._handle = _dlopen(self._name,mode)
WindowsError:[错误193]%1不是有效的Win32应用程序
// GetIcon.cpp : Defines the exported functions for the DLL application.
//
#include "stdafx.h"
#include "stdafx.h"
#include <shlobj.h>
#include <shlguid.h>
#include <shellapi.h>
#include <commctrl.h>
#include <commoncontrols.h>
HICON GetJumboIcon(char *filePath);
HICON GetJumboIcon(LPCWSTR filePath) {
SHFILEINFOW sfi = { 0 };
SHGetFileInfo(filePath, -1, &sfi, sizeof(sfi), SHGFI_SYSICONINDEX);
//Get Image list for system
HIMAGELIST* imageList;
HRESULT hResult = SHGetImageList(SHIL_EXTRALARGE, IID_IImageList, (void**)&imageList);
if (hResult == S_OK) {
HICON hIcon;
hResult = ((IImageList*)imageList)->GetIcon(sfi.iIcon, ILD_TRANSPARENT, &hIcon);
if (hResult == S_OK) {
//if it works, return it.
return hIcon;
}
}
}
我正在使用x64 Python,而且我正在使用VStudio 2013