3

これは StackOverflow に関する私の最初の質問ですが、私はコミュニティの長年のメンバーであると考えています。

自分自身を初中級のプログラマーと考えて、できるだけ具体的にしようと思います。

C dllを使用してctypesで画像ファイルをロードするPythonパッケージを作成しています。Windows 8 x64 で Python 3.3.5 32 ビット バージョンを使用しています。C コードから dll をビルドする必要がありました。dll はGitHubで入手できる stb_image.hです。GCC コンパイラで Code::Blocks バージョン 13.12 を使用しました。dll は正常にビルドされているようです。

私の定義では、dll はその関数をラップする py コード ファイルと同じフォルダーにある必要がありますが、ctypes が dll を読み込もうとすると例外が発生します: [in]famous WindowsError: [Error 126] Module not found .

私はいくつかの同様の質問を見つけ、それらの解決策から収集しようとしました

  • 経由でdllパスを追加するos.environ['PATH']

  • Path 環境変数に dll パスを手動で追加する

  • 現在の作業ディレクトリを変更するos.chdir()

  • ファイルモジュール属性を使用してライブラリを検索する

これらのどれも問題を解決しませんでした

stb_image ライブラリ自体には依存関係がないため、dll があるべき場所にあり、パスがその正確な場所を示しているため、Windows がライブラリを見つけられない理由がわかりません。そしてもちろん、仕事を成し遂げる方法は他にもたくさんあります: PyGame、pySFML (これも stb_image を使用します)、PIL、PyPng、PySDL などですが、私は主に学習目的でこれを行っています。

この質問を書いているときに、何かが頭に浮かびました(問題と関係がある場合とない場合があります):GCCでプログラムをコンパイルしてリンクし、それらを実行しようとすると、メッセージボックスが表示され、 dll (libgcc.dll など) が見つかりませんでした。それが Windows が stb_image.dll を読み込めない理由でしょうか?

私はそれを解決するために自分の経験でできることはすべて試しましたが、十分ではありませんでした. 皆さん、これについて教えてください。

PS .: 下手な英語で申し訳ありません。私はブラジル出身です。

4

0 に答える 0