1

私は、すべてのアドオンに python を使用する Blender のエクスポート スクリプトを作成しています。私のコードベースのほとんどは C++ であるため、エクスポート スクリプトからインポートされる Python モジュール (pyd) としてコードをラップし、変換に関連するすべてのビットを渡すことにしました。

リリース ビルドを作成する限り、blender はモジュールを問題なくロードし、Visual Studio でデバッグすることもできますが、バグを解決するには、リリース ビルドは信頼できないため、モジュールのデバッグ ビルドを使用する必要があります。残念ながら、その場合、モジュールはロードされません。

Python コンソールから:

 >>> import exporter_d
 Traceback (most recent call last):
  File "<blender_console>", line 1, in <module>
 ImportError: DLL load failed: The specified module could not be found.

少し調べてみたところ、エラーは別のdllが見つからないということであることがわかりました。他に何もロードしていないため、モジュールとともにPythonのデバッグビルドを追加しました。エラーは異なります。

Traceback (most recent call last):
  File "<blender_console>", line 1, in <module>
ImportError: dynamic module does not define init function (PyInit_exporter_d)

そこで、モジュールの初期化名を「PyInit_exporter」から「PyInit_exporter_d」に変更しました(致命的なエラーでブレンダーをクラッシュさせていたため、デバッグの pythond.dll を削除しました)。最初のエラー(dll の読み込みに失敗しました)が返されます。

それで、私の質問はこれです、Pythonのリリースバージョンを実行しているときにPythonモジュールのデバッグビルドをロードするにはどうすればよいですか? pythonはblenderに組み込まれているので、ソースをダウンロードしてリビルドするのは避けたいです。

4

2 に答える 2

1

これは、デバッグ ビルドとリリース ビルドの両方を使用できるように環境をセットアップする方法です。

C++ コードでは、次のものが必要です。

PyMODINIT_FUNC initmyExporter(void)

Visual Studio ソリューション (またはコードのコンパイル結果の名前を指定するために使用するもの) で、次のように言います。

<path_to_some_folder>\myExporter_d.pyd for Debug mode

<path_to_some_folder>\myExporter.pyd for Release mode

インポートするときは、

import myExporter

python.exe と python_d.exe の両方で

于 2012-11-19T15:03:12.300 に答える