昆布大好き!

主にプログラミングの技メモ

失敗しました Pythonからdllを読み込む

Pythonからdllを読み込もうとして失敗しました。

SetMouse.dllなる動的ライブラリをあらかじめ作成して、

import ctypes

dll = ctypes.windll.SetMous

と、すると

OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。

などと読み込めないことがありました。

どうやら、dllを64ビット用にコンパイルしなければならなかったらしいのです。OSが64ビットのためなのか、インタプリタが64ビットのためなのか。 (エラーメッセージはなんだったのか)

先日の投稿

コマンドラインからVCコンパイル - 開発用コンソール設定 - 芸州伝 - げいしゅうでん

に話題が戻りまして、これがいけなかった。 32ビット向けの開発環境に設定されるようですね。

こちらの記事 方法: 64 ビットの Visual C++ ツールセットをコマンド ラインから有効にする の様に、別のバッチファイルでx86向けかx64か切り替えてからコンパイルしなければいけなかったのです。

が、

私の環境では、

vcvarsall x86_amd64

のように、少し異なる引数を与えて正しく実行されるようです。

なぜなのか。AMDとは何なのか。私はK6-3以降は知りません。

そういえば、このころはIntel CPUをAMDに乗せ換えたりできましたね。クロック数が3倍になりましたね。カオスでしたね。