UTAU Plugin autoCVVC Win2000 で エラーになる件について その1


今回はツイッターからのヘルプ

【UTAUプラグイン】autoCVVC2.0配布所:デルタ@きみがためのブロマガ - ブロマガ
これがエラーになるというので調べてみました。

Traceback (most recent call last):
File "autoCVVC.py", line 3, in
File "zipextimporter.pyc", line 82, in load_module
File "psutil\__init__.pyc", line 124, in
File "zipextimporter.pyc", line 82, in load_module
File "psutil\_pswindows.pyc", line 15, in
File "zipextimporter.pyc", line 98, in load_module
ImportError: MemoryLoadLibrary failed loading psutil\_psutil_windows.pyd

Error 内容はこんな感じ

psutil を調べてみた

psutil/_psutil_windows.c at master ・ giampaolo/psutil

このpython ライブラリ を使う場合、 _WIN32_WINN の定義を Vista 移行にしてしまうと、
MIB_IFROW 構造体ではなく、XP以前では使えない MIB_IF_ROW2 構造体を使うので正常に動作しなくなる。

GetIfEntry ではなく、GetIfEntry2 を呼び出したり、ConvertLengthToIpv4Mask をよび出すのも問題だ。

#if (_WIN32_WINNT >= 0x0600) // Windows Vista and above
  netmask_bits = pUnicast->OnLinkPrefixLength;
  dwRetVal = ConvertLengthToIpv4Mask(netmask_bits, &converted_netmask);
  if (dwRetVal == NO_ERROR) {
  in_netmask.s_addr = converted_netmask;
  netmaskIntRet = inet_ntop(
AF_INET, &in_netmask, buff_netmask,
sizeof(buff_netmask));
  if (!netmaskIntRet)
  goto error;
  }
#endif

TRC
トレース実行すると ConvertLengthToIpv4Mask をコールしようとしてこけてるのが分かる。
VC++2008 でコンパイルしてるのだから  _WIN32_WINNT の定義は 0x0500 で良いような気がする( ˘ω˘)

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です