|
|
1
1
错误可能有多种原因,但要开始故障排除,可以验证以下内容: 1) 是否实际构建了64位DLL而不是32位DLL,以及
对于1),可以使用
如果在应用步骤1)之后,您已经验证了DLL是64位的,那么接下来要验证的是步骤2)。由于您在注释中提到已验证正在生成的DLL是64位的,因此应尝试步骤2)。 对于步骤2),当Windows尝试在运行时加载DLL时,将加载Windows遇到的与DLL文件名匹配的第一个名称,而不管它是否是正确的DLL(按位级别)。当有2个(或更多)DLL具有相同的确切名称,但具有不同的“位”级别(即32位或64位)时,就会出现问题。
如果您正在运行一个64位的应用程序,而Windows试图加载一个32位的DLL,那么您将得到
This link 描述Windows在加载DLL时使用的搜索逻辑。请确保Windows不会无意中选取与名称匹配但不是相同应用程序位级别的DLL。 对于大多数不常见的情况,此错误是在系统路径上发现不正确的DLL,因此Windows会尝试加载它。但正如链接所示,还有其他一些情况会导致Windows选择一个DLL(数量太多了,所以请查看发布的链接)。 不幸的是,Windows就是这样工作的,所以当您有一个32位和64位版本的DLL具有相同的名称时要小心,并且其中一个可能被Windows加载。 |