私は Windows で開発を行っていますが、この種のことについて話している人を見つけることなく、あらゆる場所を検索しました。
MSVC を使用して Python 3.1 を埋め込んだ C++ アプリをデスクトップに作成しました。python31.lib をリンクし、python31.dll を実行可能ファイルと一緒にアプリの実行フォルダーに含めました。それはうまくいきます。私の拡張機能と埋め込みコードは確実に機能し、クラッシュはありません。
Python をインストールしていない友人に実行フォルダーを送信したところ、スクリプトのセットアップ フェーズ中にアプリがクラッシュしました。
数時間前、私は Python 2.6がインストールされたラップトップでこのアプリを試しました。友人と同じクラッシュ動作が発生し、デバッグを通じて、失敗したのは Py_Initialize() 呼び出しであることがわかりました。
アプリのコードを変更せずに、ラップトップに Python 3.1 をインストールしました。私はそれを実行しましたが、完全に実行されます。Python 3.1 をアンインストールすると、アプリが再びクラッシュします。アプリにコードを挿入して、ローカルの python31.dll から動的にリンクし、それが使用されていることを確認しましたが、それでもクラッシュします。
インタープリターが起動するためにDLL以上のものを必要とするかどうかはわかりません。これに関するリソースを見つけることができませんでした。Python のドキュメントやその他のガイドでは、ユーザーが Python をローカルにインストールすることなく、Python の埋め込みを使用する C/C++ アプリケーションを配布する方法については触れていないようです。Unix よりも Windows で問題になることはわかっていますが、Python をローカルに埋め込む Windows C/C++ アプリケーションを数多く見てきましたが、それらがどのように実装されているかはわかりません。
DLL 以外に何が必要ですか? Python をインストールすると動作し、アンインストールすると動作しなくなるのはなぜですか? とても些細なことのように思えます。たぶんそれが、誰もそれについて本当に話さない理由です。それにもかかわらず、このクラッシュの問題に対処する方法を実際に説明することはできません。
事前にどうもありがとうございました。