微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Windows可以区分32位和64位DLL吗?

如果Windows应用程序通常能够区分具有相同名称的两个DLL,一个是32位,一个是64位,如果它们在系统PATHvariables中位于两个单独的path中?

特别是现在,我有FreeImage的32位和64位DLL,他们在两个单独的文件夹, free_image_pathdist32和free_image_pathdist64 ,我已经添加到系统path。 然而,build立使用它们的应用程序找不到,我想知道这是否是因为有两个具有相同名称的DLL,他们无法区分它们。

我也尝试把32位和64位的DLL分别放在windows system和windows SySWoW64文件夹中,这对于32位应用程序而言并不是64位的。

谢谢。

在“精简”64位DLL包装器中包装32位COMshell扩展

共享库 – 64位Ubuntu上的Java 32位

我可以runtime.exec()从64位Java的32位batch file?

在64位机器上编译32位代码时,应该如何处理“从void *'强制转换为”int“会失去精度?

在Web Archive内部的Java代码中通过Runtime.exec运行命令(在Jetty中部署的WAR)

Server 2008 r2环境中的Java Stringindexoutofboundsexception

内存映射文件:如何监视内存使用情况

64位与32位平台的stream行

从32位C DLL创build一个64位的DLL

设置gdb断点select一个不同的构造函数集32位与64位

Windows可以判断一个给定的DLL是为32位还是64位平台编译的,但这对你所描述的情况没有帮助。 在应用程序进程的DLL加载器将在系统路径中找到符合DLL导入的文件名要求的DLL时立即停止查找。 对于匹配代码 DLL没有其他限制。 (正如注释中所指出的那样,非代码资源DLL是一个不同的故事,我怀疑资源DLL不是由核心程序加载器加载的,而是由具有不同规则和目标的资源管理器加载的。

如果路径中的第一个DLL是32位,而您的应用程序是32位,那么DLL加载将工作。 如果应用程序是64位,它将无法加载该DLL,该过程将中止。

如果你想要两个DLL在系统路径上共存,你需要给它们唯一的文件名。

作为替代将windowssystem32的64位DLL和32位的windowssyswow64 ,我发现它也可以工作,如果你把32位的Program Files (x86)的子目录Program Files (x86)以及Program Files的相应子目录中的64位Program Files ,并将这两个子目录包含在PATH中。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐