DLL地狱:SnacNp64.dll + gtkD

时间:2010-07-22 18:53:57

标签: windows dll 64-bit gtk gtkd

显然,当我运行一些32位应用程序时,我在安装了Symantec Endpoint Protection并映射网络驱动器的Win64系统上使用gtkD创建,并尝试打开文件对话框,运行时会尝试加载SnacNp64.dll, 64位DLL,进入32位地址空间。此DLL是Symantec Endpoint Protection的一个组件,用于网络连接,因此此错误仅在如此狭窄的情况下发生。

当我从Win64本机控制台运行程序并尝试加载文件对话框时,我得到:

  

图像文件C:\ Program Files   (x86)\ Symantec \ Symantec Endpoint   Protection \ SnacNp64.dll有效,但是   适用于除了以外的机器类型   当前的机器。选择确定   继续,或取消DLL失败   负荷。

当我选择取消时,一切正常,程序似乎没有受到DLL无法加载的不良影响。当我选择ok时,我得到访问冲突,大概是因为gtkD试图将64位DLL加载到32位程序中。

然而,当我从Cygwin终端而不是本机Win64运行时,似乎Cygwin控制台捕获错误并强制加载DLL,从而导致我的应用程序崩溃。

在同一台计算机上,其他基于32位GTK的应用程序(例如GIMP)似乎不会发生此错误。

基本上,我如何确保我的32位应用程序在任何情况下都不会尝试加载64位DLL?

0 个答案:

没有答案