3

虽然这是我在 StackOverflow 上的第一个问题,但我认为自己是社区的长期成员。

考虑到自己是一名中级前程序员,我会尽量做到具体。

我正在编写一个 Python 包,它使用 C dll 加载带有 ctypes 的图像文件。我在 Windows 8 x64 上使用 Python 3.3.5 32 位版本。我必须从 C 代码构建 dll。dll 是 stb_image.h,可在GitHub中找到。我在 GCC 编译器中使用了 Code::Blocks 13.12 版。dll 似乎构建得很好。

根据我的定义,dll 必须与包装其函数的 py 代码文件位于同一文件夹中,但是当 ctypes 尝试加载 dll 时会引发异常:[in]着名的 WindowsError: [Error 126] Module not found .

我发现了几个类似的问题,并试图从他们的解决方案中收集

  • 通过添加dll路径os.environ['PATH']

  • 在 Path 环境变量中手动添加 dll 路径

  • 更改当前工作目录os.chdir()

  • 使用文件模块属性定位库

这些都没有解决问题

stb_image 库本身没有依赖关系,所以我不明白为什么 windows 找不到它,因为 dll 是它应该在的位置,并且路径地址它的确切位置。当然,还有很多其他方法可以完成这项工作:PyGame、pySFML(也使用 stb_image)、PIL、PyPng、PySDL,应有尽有,但我这样做主要是出于学习目的。

在写这个问题时,我的脑海中突然出现了一些东西(可能与问题有任何关系也可能没有):每当我用 GCC 编译和链接程序并尝试运行它们时,我都会收到一个消息框,告诉我一些找不到 dll(libgcc.dll 或类似的东西)。这可能是 Windows 无法加载 stb_image.dll 的原因吗?

我尝试了我的经验允许我做的所有事情来解决它,但这还不够。请各位大神给我指点一下好吗?

PS:对不起,英语不好。我来自巴西。

4

0 回答 0