【问题标题】:ctypes DLL with optional dependencies具有可选依赖项的 ctypes DLL
【发布时间】:2011-02-24 06:26:31
【问题描述】:

免责声明:我是 Windows 编程新手,所以我的一些假设可能是错误的。如果是,请纠正我。

我正在使用 ctypes 为 C API 开发一个 python 包装器。 API 附带 64 和 32 个 DLL/LIB。我可以使用 ctypes.WinDLL('TheLibName') 成功加载 DLL 并调用函数等。

但是,有些函数没有做他们应该做的。经过进一步调查,似乎正在使用 32 位 DLL,这是导致意外行为的原因。

我尝试过使用 ctypes.WinDLL('TheLibName64') 但找不到该模块。我尝试使用 regsrv32 注册 DLL,但它报告没有入口点(当我尝试注册 TheLibName 时它也报告没有入口点,WinDLL() 找到了

该 DLL 附带 Visual Studio 中的示例项目(我对 VS 的经验为 0,因此请再次在这里纠正我),它构建了示例项目的 32 位和 64 位版本。在 .vcsproj 文件中,64 位版本的配置包括:

AdditionalDependencies="TheLibName64.lib"

在 VCLinkerTool 部分中。

在 windows/system32 中同时存在 TheLibName.dll/.lib 和 TheLibName64.dll/.lib。

所以在我看来,我现在的问题是让 python ctypes DLL 加载器在加载 DLL 时加载这些可选依赖项。但是,我在 ctypes 文档中找不到任何关于此的信息(也许是因为,作为一个打瞌睡的菜鸟,我不知道正确的术语)。

有没有办法在 ctypes 中做到这一点?我会以完全错误的方式解决这个问题吗?任何有关可选 DLL 依赖项以及它们如何在 Windows 中加载的帮助或一般信息将不胜感激。

谢谢

【问题讨论】:

    标签: python windows visual-studio dll ctypes


    【解决方案1】:

    当我使用 64 位版本的 python 时,我可以加载 LibName64。早该尝试的!

    【讨论】:

      猜你喜欢
      • 2020-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-17
      相关资源
      最近更新 更多