简短摘要: 我有一个DLL,它可以检测计算机中的钩子(这是我在互联网上找到的版本),并且可以在32位系统上运行,因此我认为我也应该使用32位版本的Python。 现在,我的操作系统是64位的,但是我读到其他问题,他们说只要运行它的进程(Python)是32位的,就不应该成为问题。 所以我运行了程序,它说:
'''此程序当前不支持64位主机。失败 附加到桌面的'默认'。'''
'''FATAL:c:\ users \ 1 \ downloads \ hookd1 \ hookdll \ desktop.c行781, init_global_desktop_store():add_all_desktops()失败。无法添加 任何台式机。'''
这意味着64位计算机无法运行它,但是正如您在下面的代码中看到的那样,它只是一个警告,应该可以工作(我认为):
void warn_x64( void )
{
USHORT x64_host = 0;
/* IsWow64Process() is not always available. alternative:
Windows x86 host GS register is 0, x64 GS register is not
*/
#if defined( _MSC_VER )
__asm
{
mov x64_host, gs
}
#else
asm( "mov %%gs, %0" : "=r" (x64_host) );
#endif
if( x64_host )
MSG_WARNING( "This program does not currently support 64-bit hosts." );
return;
}
我尝试解决此问题:
将python更改为32位版本
使用sysWOw64
在regsvr32
中运行DLL(虽然不太了解解决方案,但是除非我丢失了某些东西,否则DLL似乎无法工作)。
将我的Visual Studio项目从调试版本更改为发行版,因为相关性检查说它使用了我没有的msvcr100d.dll
,所以我将DLL更改为发行版。
另一个我尝试过但不起作用的解决方案:
我在某处看到的一个修补程序是将解决方案中的Any CPU
更改为x86
,但是我的解决方案只有两个其他选项,分别是'active(win32)'和win32
。
我的目前位于active(win32)
上,我认为这是应该支持的一个,对于那些说我也应该尝试win32的人,我用win32
重建了解决方案,并且出现了同样的问题。
关于我想要的内容的简短最终解释: 我已经阅读了类似的问题并尝试了解决方案,但都没有解决我的问题,尽管我的操作系统是64位,但我只想在32位Python中运行32位DLL(C程序说不会不接受64台主机,但它应该根据stackoverflow中指出的其他解决方案,这也只是警告)。 结论: 我除外,它只能在此64位环境中运行(因为DLL运行程序Python在32位环境中)。 但是相反,它没有运行,因为该程序似乎警告了64台主机。
编辑: 我还应该提到来源code。尽管我对DLL给出的输出进行了更改,但是我对输出没有做出任何更改。
感谢任何尝试帮助我解决此烦人问题的人!