UTAU Plugin autoCVVC Win2000 で エラーになる件について その1
@BlackWingCat こんばんは。UTAUのプラグインでautoCVVC( https://t.co/VhimpBR0Vb )というのが動かないのですけどこれどうにかなりますでしょうか?拡張カーネルは今v2.9e2Gでやっております
— 旧み (@lute407) January 30, 2019
今回はツイッターからのヘルプ
【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 |
トレース実行すると ConvertLengthToIpv4Mask をコールしようとしてこけてるのが分かる。
VC++2008 でコンパイルしてるのだから _WIN32_WINNT の定義は 0x0500 で良いような気がする( ˘ω˘)
Comments