【问题标题】:How to link msvcr100.dll to cx_freeze program如何将 msvcr100.dll 链接到 cx_freeze 程序
【发布时间】:2014-06-08 04:50:04
【问题描述】:

我有一个控制台类型的 Python3 程序 [.py],当执行 [编译后的 exe 文件] 时,在某些机器 [朋友或亲戚等] 中出现缺少 msvcr100.dll 错误,我需要下载该 dll 文件 [google搜索并下载]并自己复制到system32文件夹。

因此,在谷歌搜索后,我发现 cx_Freeze 在 build_exe 中有一个名为 "include_msvcr" 的选项,这可能有助于我解决这个问题,但文档不符合我的标准,我不能'不明白该怎么做。

这是我的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)])

我尝试在Executable 中的base 参数之后添加include_msvcr 行,但它给出了include_msvcr not defined 错误。

顺便说一句。我使用此 GUI 编译代码,因为只要程序正在运行,我不希望控制台窗口出现 [讨厌它] 谁能告诉我怎么做[也许用一个示例代码]

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

【问题讨论】:

  • 我需要自己下载该 dll 文件并将其复制到 system32 文件夹。 这不是你应该这样做的。您必须下载并安装 Visual C++ 运行时:microsoft.com/en-us/download/details.aspx?id=5555
  • 好吧@stijn,即使我知道,但我的程序只依赖于那个 dll,当我说它只需要那个文件时,相信我。我下载了,复制到system32文件夹,到现在都没遇到过问题
  • 我不是说你的方法不起作用,我是说它不是分发 dll 的正确方法,因为它可能会在将来给其他应用程序或你的应用程序带来问题。正确的方法是安装redist包或将dll放在你的应用程序目录中,但从不在system32中。例如,请参阅msdn.microsoft.com/en-us/library/ms235299.aspx 和 stackoverflow.com/questions/1073509/…

标签: python python-3.x dll windows-7-x64 cx-freeze


【解决方案1】:

感谢大家的帮助,但我自己想通了。 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)])

【讨论】:

  • 谢谢,一年后为我工作。这是我需要的 C++ 运行时的唯一依赖项,使我免于强迫客户也安装它。
猜你喜欢
  • 1970-01-01
  • 2023-01-26
  • 2013-06-14
  • 1970-01-01
  • 2011-04-15
  • 2019-05-08
  • 1970-01-01
  • 1970-01-01
  • 2015-08-24
相关资源
最近更新 更多