pythonXX.dll とリンクすることに違和感はなく、そういうことではなくその理由付けのはなし。
Python C API を使ったいわゆる「埋め込み Python」は linux/Windows ともに一通りやってるんだけど、そういえば Python 全体を抱え込んだり、静的リンクを試みようとしたことはなかったな。
Python 3.4 翻訳の話です。
「Windows 上の Python FAQ」に少し未訳が残っていたので訳そうとしてたんだけど、
ん? そうだっけ?
DLL を動的ロードするのに必要な要件を満足するのに Python がいつでも pythonXX.dll でねばならぬ、と言ってるわけなんだけれど、「DLL でないと DLL をダイナミックにロード出来ない」理由が今ひとつ思い当たるものがない。なんかあったっけか? 「自分の名前」とか「自分のハンドル(HINSTANCE)」が必要だから、というのはそんなには理由にならなくて、たぶんどうにでもなる。それ以外になんかあったかなぁ? あるいはあれか。DLL お決まりのスタートアップコード(DLLMain だっけ?)に依存した処理なのかいね。
まぁいいか…。こんなもん「受け容れてください」以上のもんではないし。
18:30 追記:
このパラグラフに続く2つの翻訳が誤っていた。Windows プログラミングを知らない(かつ C も多分知らない)人が翻訳してしまったのだろう、load-time/run-time を「静的/動的」と誤訳してしまっていた。今直したけれど、単に「load-time/run-time」と英語に戻しただけ。
Transifex では「コメント」を入れれるので(本当はレビュー用みたいだが)そこに:
Load-time では、OS の「ローダが」DLL のロードを行うので、DLL 不在時に「DLLが存在しない」旨のエラーを起こす。Run-time では LoadLibrary で明示的に「アプリケーション自身が」ロードを行うので、エラー処理の責任はアプリケーションにある。
一方、「Dynamic Link」とは、「DLL として分割されたライブラリ」をリンクすることそのもの。「Static Link」はリンクする相手はもはや DLL ではなく、これとリンクするとライブラリは EXE 内に「埋め込まれる」。
Python の「.lib」「.dll」の前者の「.lib」は直後の説明がまさにそうしているように、「DLL をロードするためのライブラリ」(インポートライブラリ)であって、「static library」のそれとはまったくの別物。(つまり実効コードを一切含まない、ただのシンボルテーブル。)
Load-time / Run-time は訳さないほうが良い。のでそう修正しておく。
と入れておいた。