【问题标题】:Can't load library from ctypes无法从 ctypes 加载库
【发布时间】:2021-08-25 07:17:02
【问题描述】:

我想使用来自 python 的 C++ API。 我拥有的文件是 XX.dll、XX.lib 和 XX.h

我掌握的唯一信息是:

注意:要在 C++ 项目中使用 XX 函数,您必须集成 XX 目标文件库“XX.lib”和 XX 头文件“XX.h”。 XX DLL 必须在您的计算机环境中添加但不一定 在 Visual Studio 项目的同一文件夹中。

我天真地尝试获取 .dll 并使用 ctypes.cdll.LoadLibrary("XX.dll"),但是当我这样做时,python 尝试(并且失败)加载 mscvr90.dll。

我认为mscvr90.dll的问题与https://stackoverflow.com/a/27392347/12452727有关,但我不知道如何解决

【问题讨论】:

    标签: python c++ dll ctypes


    【解决方案1】:

    我找到了一个快速解决方法。 显然,这个想法是使用“mt.exe”将清单合并到 dll 中。

    清单“XX.dll.manifest”

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
      <dependency>
        <dependentAssembly>
          <assemblyIdentity type='win32' name='Microsoft.VC90.CRT' version='9.0.21022.8' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
        </dependentAssembly>
      </dependency>
    </assembly>
    

    需要的命令是 mt.exe -manifest XX.dll.manifest -outputresource:XX.dll;2

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-12
      • 1970-01-01
      相关资源
      最近更新 更多