如果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中。