无法在64位平台上的python 32位中运行32位dll

时间:2019-05-01 10:42:49

标签: python c dll 32bit-64bit

简短摘要: 我有一个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位版本

  • 使用sysWOw64regsvr32中运行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给出的输出进行了更改,但是我对输出没有做出任何更改。

感谢任何尝试帮助我解决此烦人问题的人!

0 个答案:

没有答案