LINK : the 32-bit linker ran out of heap space and is going to restart linking with a 64-bit linker

python保护源码 py文件打包成pyd

参考如上步骤对py文件进行加密或打包,出现如下报错:

LINK : the 32-bit linker ran out of heap space and is going to restart linking with a 64-bit linker
LINK : restarting link with 64-bit linker `D:\Development_Tools\VS\VS2019\VC\Tools\MSVC\14.28.29910\bin\HostX64\x64\link.exe'
LINK : fatal error LNK1104: cannot open file 'D:\Users\F47920C\Desktop\Cockpit_Test_Tool\main.cp37-win_amd64.pyd'
error: command 'D:\\Development_Tools\\VS\\VS2019\\VC\\Tools\\MSVC\\14.28.29910\\bin\\HostX86\\x64\\link.exe' failed with exit status 1104

先上解决方案:
修改setup.py即可

from distutils import _msvccompiler
_msvccompiler.PLAT_TO_VCVARS['win-amd64'] = 'amd64'

from distutils.core import setup
from Cython.Build import cythonize


setup(
    name='main',
    ext_modules=cythonize("main.py"),
)

解释:
在编译一些大而复杂的py文件时, MSVC 在链接步骤中内存不足。
Microsoft 有一个关于此错误的解决方案,其中建议了许多选项,主要是使用 64 位编译器。 (请注意,这与您是编译 32 位还是 64 位模块无关——这只是编译器可执行文件的选择)

在编译 Python 扩展模块(尤其是 setup.py)时,编译器设置通常由 distutils 选择。 不幸的是,distutils 似乎选择强制使用 32 位编译器。
所有,我们要做的就是将选项 amd64 传递给 vcvarsall.bat 脚本,微软提供该脚本来设置他们的编译器,从而获得一个 64 位编译器来构建一个 64 位扩展。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值