Issue with running EX4 with DLL on VPS

 

Hello all,

I have recently written an indicator that uses a custom DLL written in C++ and uses MySQL Connector/C++ 8.0 to connect to a database for authentication. I was able to get the DLL to load on my own PC as well as another client's, but I am unable to load it on my Virtual Private Server (VPS). It keeps returning error code 126 DLL not found.

I have ensured that the settings used to load this indicator are exactly the same as when running on PCs, including ensuring DLLs are allowed on the VPS side and that all dependencies are placed in the correct directories. Any help would be very much appreciated.

Thanks,

Tungsten

 

If it is about MQL5 VPS for MT4/MT5 so - read this part of MQL5 VPS rules

Forum on trading, automated trading systems and testing trading strategies

Is 'Allow DLL import' and 'Allow modification of signal setting ' in MQL4 Indicators dangerous?

Sergey Golubev, 2017.09.09 06:05

Rules of Using the Virtual Hosting Service MetaTrader (Forex VPS)

No DLLs are allowed on a Virtual terminal. There is no physical capacity to use DLLs there.

If a program launched on a Virtual terminal tries to call a function from any DLL, this EX4/EX5 program is immediately stopped due to a critical error. Any DLL calls are forbidden.

 
Hello,


Here is an update on the problem scope. I have attempted to load my custom DLL on four different devices (PCs) including the one I developed this DLL on. Of the four devices, only two successfully loaded the DLL (including my developer device), while among the other two, one displays error code 182, and the other error code 126. The four devices all have the exact same configuration where I believe is relevant, including allowing DLL imports and setting up the Libraries sub-directory in the MT4 terminal as shown in the attached screenshot. I have also attempted downloading and installing MySQL on the device that displays error code 182, but the problem still persists.


Shown below are the list of things I did to build my DLL, placed here in case it helps:

  • Built and compiled using Microsoft Visual Studio 2017
  • Built with MySQL Connector/C++ 8.0, using JDBC legacy driver API
  • Built with the Dynamic Library connector as highlighted here: https://dev.mysql.com/doc/connector-cpp/8.0/en/connector-cpp-apps-windows-notes.html
  • Built for 32-bit (x86) on Release mode


I am trying to find out why it loads only on two devices while it fails to load on the other two. I would appreciate it very much if I could receive some help on this.


Many thanks,

Tungsten
MySQL :: MySQL Connector/C++ 8.0 Developer Guide :: 5.2.1 Windows Notes
  • dev.mysql.com
Connector Type Dynamic Library File Name Import Library File Name
Files:
 
Tungsten:
Hello,


Here is an update on the problem scope. I have attempted to load my custom DLL on four different devices (PCs) including the one I developed this DLL on. Of the four devices, only two successfully loaded the DLL (including my developer device), while among the other two, one displays error code 182, and the other error code 126. The four devices all have the exact same configuration where I believe is relevant, including allowing DLL imports and setting up the Libraries sub-directory in the MT4 terminal as shown in the attached screenshot. I have also attempted downloading and installing MySQL on the device that displays error code 182, but the problem still persists.


Shown below are the list of things I did to build my DLL, placed here in case it helps:

  • Built and compiled using Microsoft Visual Studio 2017
  • Built with MySQL Connector/C++ 8.0, using JDBC legacy driver API
  • Built with the Dynamic Library connector as highlighted here: https://dev.mysql.com/doc/connector-cpp/8.0/en/connector-cpp-apps-windows-notes.html
  • Built for 32-bit (x86) on Release mode


I am trying to find out why it loads only on two devices while it fails to load on the other two. I would appreciate it very much if I could receive some help on this.


Many thanks,

Tungsten

Could be a dependency issue. You should check the dependency of your DLL and be sure you have all installed.

https://stackoverflow.com/questions/14361992/dll-load-library-error-code-126

DLL Load Library - Error Code 126
DLL Load Library - Error Code 126
  • 2013.01.16
  • SpamdarkSpamdark 61122 gold badges1111 silver badges3838 bronze badges
  • stackoverflow.com
I'm using the 'LoadLibrary' from the Windows API, when I run the application, it throws me an error code 126. I read that it may be caused by dependencies, I checked what's wrong with some applications like Dependency Walker, but everything was fine. LoadLibrary in the application:
 
Tungsten:...and the other error code 126...

It looks like it's not your DLL but a missing runtime dependency of the MySQL related software you use, which is causing the 126. I would guess it's a missing VC++ runtime library which makes the MySQL driver fail. Make sure all versions are installed everywhere and current, 32 and 64 bit. The screenshot only shows the 32 bit versions.

VC++ runtimes
 

Hello,

Thank you all for your help. I have resolved the 126 errors, apparently they are missing the OpenSSL 32-bit libraries libeay32.dll and ssleay32.dll.

Many thanks.