can';t在64位平台上以32位python运行32位dll

can';t在64位平台上以32位python运行32位dll,python,c,dll,32bit-64bit,Python,C,Dll,32bit 64bit,简短摘要: 我有一个DLL,可以检测计算机中的钩子(这是我在互联网上找到的一个版本),它是32位的,所以我想我也应该使用32位版本的Python。 现在,我的操作系统是64位的,但我读到了其他问题,他们说只要运行它的进程(Python)是32位的,就不会有问题。 所以我运行了这个程序,它说: ''此程序当前不支持64位主机。未能 附加到桌面“默认值”。“” ''致命:c:\users\1\downloads\hookd1\hookdll\desktop.c第781行, 初始化全局桌面存储():添

简短摘要: 我有一个DLL,可以检测计算机中的钩子(这是我在互联网上找到的一个版本),它是32位的,所以我想我也应该使用32位版本的Python。 现在,我的操作系统是64位的,但我读到了其他问题,他们说只要运行它的进程(Python)是32位的,就不会有问题。 所以我运行了这个程序,它说:

''此程序当前不支持64位主机。未能 附加到桌面“默认值”。“”

''致命:c:\users\1\downloads\hookd1\hookdll\desktop.c第781行, 初始化全局桌面存储():添加所有桌面()失败。无法添加 任何台式机

这意味着64位机器无法运行它,但正如您在下面的代码中看到的,它只是一个警告,应该可以工作(我认为):

我试图解决问题的尝试:

  • 将python更改为32位版本

  • 使用
    regsvr32
    sysWOw64
    中运行DLL(不太了解解决方案,但DLL似乎无法工作,除非我遗漏了一些内容)

  • 将我的Visual Studio项目从调试版本更改为发行版,因为依赖项检查表明它使用了我没有的
    msvcr100d.dll
    ,所以我将dll更改为发行版

  • 我尝试过的另一个解决方案无效: 我在某处看到的一个修复方法是在解决方案中从
    任何CPU
    更改为
    x86
    ,但我的解决方案只有两个其他选项,即“活动(win32)”和
    win32
    。 我的当前位于
    active(win32)
    上,我认为它应该支持,对于那些说我也应该尝试win32的人,我用
    win32
    重新构建了解决方案,它给出了同样的问题

对我想要的内容进行简要的最终解释: 我读过与我类似的问题,并尝试过他们的解决方案,但没有一个解决了我的问题,我只想用Python 32位运行我的32位DLL,尽管我的操作系统是64位的(C程序说它不接受64台主机,但它应该根据stackoverflow中指出的其他解决方案,这也只是一个警告)。 结论: 我不希望它在这个64位环境中运行(因为DLL运行程序Python是32位的)。 但是,它没有运行,因为程序似乎警告了64台主机

编辑: 我还要提到来源。虽然我对DLL提供的输出进行了更改,但除了输出之外,我没有更改任何其他内容

感谢所有试图帮助我解决这个非常烦人的问题的人

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;
}