python 在哪里查找 Windows 上由 ctypes.cdll. 打开的 dll?

2023-11-25

恐怕我在互联网上找不到这个问题的简单答案,所以也许将来会因为这个问题而找到一个简单的答案!

我正在使用 pywiiuse,它是 Windows 上 C wiiuse 库的 python 包装器。我已经获得了几个简单的 C 示例,只需将 dll、标头和库包含在源目录中即可。

但是,我想知道将 dll 放在哪里以便 pywiiuse 找到它。查看源码可知其加载方式如下:

dll = ctypes.cdll.wiiuse

当我将 dll 与测试示例放在同一目录中时,运行示例会产生模块未找到异常。

python在哪里寻找dll?


The Windows DLL 搜索顺序MSDN 上有记录。它不是特定于 Python 的,并且无法从命令行选项更改搜索顺序。 (但请参阅链接的文章了解影响搜索顺序的其他方法。)

来源为ctypes/__init__.py does:

from _ctypes import LoadLibrary as _dlopen

我无法找到它的定义LoadLibrary in _ctypes.c,但大概它是 Windows 的包装器LoadLibraryEx其行为与 POSIX 类似的函数dlopen函数,因为这就是它的使用方式。

如果您可以修改Python源以使用ctypes.CDLL相反,它应该可以工作:

folder = os.path.dirname(os.path.abspath(__file__))
dll_path = os.path.join(folder, "wiiuse.dll")    
dll = ctypes.CDLL(dll_path)

如果这不可行,您也许可以对 ctypes 进行猴子修补来处理这种特定情况,但这似乎有点危险。也许将 DLL 复制到与 Python DLL 相同的文件夹中是最简单的选择。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python 在哪里查找 Windows 上由 ctypes.cdll. 打开的 dll? 的相关文章

随机推荐

  • .NET 内核之间线程的移动

    跟进问题来自多核使用 线程 线程池 线程在其生命周期内是否从一个核心移至另一个核心 当然 想象一下你有三个 在双核系统上运行的线程 给我一个公平的时间表 但不 涉及定期移动线程 核心之间 这是我第一次访问这个网站 所以我想我没有足够的代表来
  • MongoDB c# 驱动程序 - 名为 Id 的字段可以不是 Id 吗?

    更具体地说 有一个类 class X string Id get set class Y X ObjectId MyId get set 我希望 MyId 成为 Y 的 id 即映射到 id 是否可以 在这段代码之后我得到一个异常 var
  • SQLAlchemy - 如何映射只读(或计算)属性

    我试图弄清楚如何映射一个简单的只读属性 并在保存到数据库时触发该属性 一个人为的例子应该可以让这一点更加清楚 首先 一个简单的表格 meta MetaData foo table Table foo meta Column id Strin
  • 用因子替换一定范围内的数字[重复]

    这个问题在这里已经有答案了 给定一个由一系列整数 年龄 组成的数据帧列 我想将整数范围转换为序数变量 我当前的代码不起作用 我该怎么做 df lt read table http dl dropbox com u 822467 df csv
  • unity Shader 使用 Shader.Find 时返回 NULL

    就像声明的那样here我不是唯一发现以下问题的人 Shader Find 返回 Null 在上面的链接中 他们通过在资源文件夹中创建某些内容 给出了解决方案 但我不确定我是否理解 首先 这对于所有情况都是必要的吗 意味着 Shader Fi
  • 更改 Windows 窗体中的内容

    我正在使用 Windows 窗体在 C 中制作一个应用程序 我想完全交换 Windows 窗体中的所有内容并将其替换为其他内容 有什么方便的方法可以做到这一点吗 示例 我有一个菜单 当我单击 开始 时 我希望菜单消失并开始游戏 我没有使用
  • Windows Phone 7.1 和 Windows Phone 8 上的 Sqlite

    我正在开发一个适用于 Windows Phone 7 1 7 5 8 必须适用于两者 的应用程序 其中需要数据库连接 该应用程序已经针对 Iphone 和 Android 实现 因此我必须使用那里的数据库文件 以使所有应用程序的数据库结构都
  • 我是否使用正确的方法来监视创建句柄时要执行的任务?

    是否有普遍接受的最佳实践来创建自行取消订阅的事件处理程序 例如 我想到的第一件事是 Foo cs Bar bar new Bar add l req d state EventHandler handler new EventHandler
  • 在 Android 应用程序中从 Java JSch 中的字符串或资源加载私钥

    我正在编写一个应用程序 该应用程序应该使用 JSch 通过 SSH 访问我的私人服务器 由于我已经设置了公钥身份验证 因此我希望此应用程序以相同的方式进行身份验证 我将是唯一使用此应用程序的人 因此我想将我的密钥直接存储在应用程序内 例如硬
  • 如何使用 git-cache-meta?

    我想将目录的权限保留在 git 存储库中 似乎一种简单的方法是使用git cache meta 其用途的示例和最小解释是什么 如果您指的是this实施git cache meta 那么您需要做的就是确保该脚本位于您的 PATH 中 将其放入
  • 当警告趋势出现时,如何将构建标记为不稳定?

    因此 我们将 Jenkins 与 MS Build 结合使用来构建我们的项目 我们还有一个警告插件以及我们项目中的大量警告 我正在努力与这些警告作斗争 我想要采取的步骤之一是 当最后一个构建中的警告数量大于前一个构建时 将构建标记为不稳定
  • PHP 中的整数四舍五入到最接近的 5 的倍数

    搜索将数字四舍五入到最接近的 5 倍数的函数 22 gt 20 23 gt 25 40 gt 40 46 gt 45 48 gt 50 等等 尝试过这个总是返回更高的值 5 ceil n 5 Use round 代替ceil 5 round
  • Laravel:任务调度[并行]

    我有多项任务需要每隔一两个小时完成一次 所有这些都已通过 Laravel 使用以下命令作为 cron 作业进行安排 schedule gt command email notifications1 gt cron 15 schedule g
  • 如何在package.json中使用环境变量

    因为我们不希望项目代码中包含敏感数据 包括 package json 文件 所以在我看来 使用环境变量将是一个合理的选择 示例 package json dependencies accounting 0 4 0 async 1 4 2 m
  • JavaScript 中的 For..In 循环 - 键值对

    我想知道是否有办法做类似 PHP 的事情foreachJavaScript 中的循环 我正在寻找的功能类似于这个 PHP 片段 foreach data as key gt value 我正在看JSfor in循环 但似乎没有办法指定as
  • dyld:未加载库:@rpath/libswiftCore.dylib /未找到图像

    我正在从 xcode 到我的 iOS 设备运行我的应用程序 并且在 iOS 设备上出现此屏幕和黑屏 控制台文本 dyld Library not loaded rpath libswiftCore dylib Referenced from
  • 如何设置(组合)表中的两个主键

    对于一个小型的销售相关应用程序 我们使用逻辑数据模型设计数据库 上台转换成实体模型 在SQL Server Management Studio Express中创建表时 根据我们的逻辑数据模型 我们需要组合两个属性来形成唯一的id 是否可以
  • 什么是协程?

    什么是协程 它们与并发有何关系 协程和并发在很大程度上是正交的 协程是一种通用控制结构 流量控制在两个不同的例程之间协作传递而不返回 Python 中的 yield 语句就是一个很好的例子 它创建一个协程 当遇到 yield 时 函数的当前
  • 我如何知道我的 ansible 使用的是哪个版本的 Jinja2?

    我尝试使用pip list and pip freeze没有成功 这可能是显而易见的事情 但到目前为止我还无法找到它 将此文件拖放到 action plugins jin ver py from ansible plugins action
  • python 在哪里查找 Windows 上由 ctypes.cdll. 打开的 dll?

    恐怕我在互联网上找不到这个问题的简单答案 所以也许将来会因为这个问题而找到一个简单的答案 我正在使用 pywiiuse 它是 Windows 上 C wiiuse 库的 python 包装器 我已经获得了几个简单的 C 示例 只需将 dll