如何将msvcr100.dll链接到cx_freeze程序

7 投票
1 回答
5516 浏览
提问于 2025-04-18 09:00

我有一个用Python3写的控制台程序 [.py],当我在某些电脑上运行这个程序 [编译后生成的exe文件] 时,会出现缺少 msvcr100.dll 的错误。这种情况下,我需要自己去下载这个dll文件 [在谷歌上搜索并下载],然后把它复制到 system32 文件夹里。

所以,我在网上查资料时发现 cx_Freeze 有一个选项叫 "include_msvcr",在 build_exe 中可以用来解决这个问题,但文档写得我看不太懂,没搞明白怎么用。

这是我的 setup_console.py 代码:

import sys
from cx_Freeze import setup, Executable

base=None
if sys.platform=='win32':
    base="Win32GUI"

setup( name="Rescue Unit",
       version="2.0",
       executables=[Executable("resunitv2.py",base)])

我试着在 Executablebase 参数后面加上 include_msvcr 这一行,但结果却报了个 include_msvcr not defined 的错误。

顺便说一下,我使用这个图形界面的编译代码是因为我不想在程序运行时出现控制台窗口 [我不喜欢那样]。有没有人能教我怎么做 [最好能给个示例代码]。

[cx_Freeze 版本是 4.3.3,Python 版本是 3.5,Windows 7 SP1 x64]

1 个回答

11

感谢大家的帮助,不过我自己解决了这个问题。include_msvcr 这个选项需要在 setup.py 文件中添加,具体方法如下:

import sys

from cx_Freeze import setup, Executable

build_exe_options = {
"include_msvcr": True   #skip error msvcr100.dll missing
}

base=None

if sys.platform=='win32':
base="WIN32GUI"


setup(  name = "AppName",
        version = "1.0",
        description = "blah blah",
        options = {"build_exe": build_exe_options},
        executables = [Executable("appname.py", base=base)])

撰写回答