加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

winapi – 在Windows RT中从桌面应用加载“comctl32.dll”失败

发布时间:2020-12-14 05:41:48 所属栏目:Windows 来源:网络整理
导读:使用 http://forum.xda-developers.com/showthread.php?t=1944675中描述的方法,我使用Windows RT在我的表面执行了win32桌面应用程序. 可以使用LoadLibrary加载像user32.dll,kernel32.dll,gdi32.dll等的Windows dll. 但是当我尝试使用LoadLibrary加载“comctl
使用 http://forum.xda-developers.com/showthread.php?t=1944675中描述的方法,我使用Windows RT在我的表面执行了win32桌面应用程序.

可以使用LoadLibrary加载像user32.dll,kernel32.dll,gdi32.dll等的Windows dll.
但是当我尝试使用LoadLibrary加载“comctl32.dll”或“c??omdlg32.dll”时,它返回NULL.

GetLastError()返回的错误代码是1114.这意味着“动态链接库(DLL)初始化例程失败.”

编辑:
当我测试为x86编译的应用程序时,它没有任何问题.当我为ARM构建它并在Windows RT下运行时发生此错误.

示例代码:

HMODULE hModule;
hModule = LoadLibraryA("user32.dll");
printf("Load Library user32.dll : %x with Err: %xn",hModule,GetLastError());
hModule = LoadLibraryA("kernel32.dll");
printf("Load Library kernel32.dll : %x with Err: %xn",GetLastError());
hModule = LoadLibraryA("comctl32.dll");
printf("Load Library comctl32.dll : %x with Err: %xn",GetLastError());

解决方法

But loading Microsoft approved dll like user32.dll and comctl32.dll is possible

您认为comctl32.dll被“批准”的假设是错误的.它的所有导出函数都不在可以在Store应用程序中使用的winapi函数列表中.它唯一的用途是为常用控件提供一个实现,它们都不能在Store应用程序中使用.它只能用于桌面应用程序,您无法在Windows RT上自行编写.

Microsoft没有理由让comctl32.dll在Store应用程序的沙箱中工作.因此预计它将无法工作.

可以加载kernel32和user32,这些DLL确实包含已批准的winapi函数.但是,使用未在批准列表中的任何功能将使您在验证测试中失败.你不能发布这样的应用程序.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读