Cannot load library error 126 の回避方法

Forex Scalpino Robot (以下、FSR)で発生した、cannot load library エラーの回避方法の記録です。

 

お名前.comさんのVPS (WIndows Server 2012 R2)で、MT4のEAであるFSRが、どういう訳か稼働しない問題についていろいろ調べて回りました。(使えるねっとさんの、Windows Server 2008 R2でも同様に、エラーでした)

 

結果としては、MSVCR71.dllが実行時に必要でしたが、このdllが不足していた為、EAが稼働しませんでした。

MSVCR71.dllはVisual Studioで開発したプログラムを実行させる場合に必要となるものですが、これを追加で用意することで、error126が回避できました。

 

事象:このように、EAが稼働停止してしまう

22:10:02 Forex Scalpino Robot EURUSD,M15 inputs: CLICKBANK.ID="XXXXXXXX"; EMAIL="XXXXXXXXX"; Lots=0.1; StopLoss=31; Take,,,,
22:10:18 Forex Scalpino Robot EURUSD,M15: cannot load library 'ForexScalpinoRobot.dll' (error 126)
22:10:18 Forex Scalpino Robot EURUSD,M15: expert stopped
22:10:18 Forex Scalpino Robot EURUSD,M15: initialized

 

原因として、Windowsのセキュリティ機能である、データ実行防止(DEP)を疑い、どはまりしましたが、手持ちの Windows XP SP3ではFSRの稼働に問題ないことから別アプローチにて調査しました。たどり着いた先が、実行時の依存性欠如によるエラーです。

 

問題となっている’ForexScalpinoRobot.dll’について、’Dependency Walker’というフリーのソフトを使って依存関係を見た結果が次の図となります。

0407-dwres

 

 

<- はてなマークがついている、”MSVCR71.DLL”が怪しいとわかります

 

 

 

 

 

 

これで、問題解決の糸口が見つかりましたので、Webから当該dllをダウンロードし、FSRが稼働するMT4の”terminal.exe”と、MQL4->Libraryフォルダの2箇所に”MSVCR71.dll”をコピーしました。(どちらか一方でいいはずですが、面倒なので両方にコピー)

 

そして、やっとこさ問題解決とあいなりました。。。

0407-runFSR

 

 

 

 

コメントを残す