Теоретически, МТ4 всегда х86, значит и DLL тоже должна быть х86.
/Libraries |
Папка для хранения библиотек MQL5/MQL4. |
DLL это не библиотека MQL5/MQL4.
Такое вот дело, друзья, имею Window Server 2008, там конфигурация 64 бита.
устанавливаю ка положено для МТ4 свою Dll, сконфигурированную в Visual Studio 2010 как win32, в MQL4\Library\
получаю - код 126 - система не может найти мою DLL.
ладно, конфигурирую эту DLL в Visual Studio 2010 как x64,
теперь получаю код 193 - DLL не является программой win32,
т.е. делаю вывод, что модуль собственно находится, но грузиться не хочет...
Есть у кого-то какие-то намеки на решение этой незадачи ?
Речь идет об MFC? Если да, то можно читать дальше.
Библиотека должна быть именно 32-хбитная. Ошибка 126 свидетельствует о том, что терминал не может найти все DLL, на которые ссылается исходная библиотека. Таким образом, нужно либо включить в состав DLL все библиотеки, на которые она ссылается, либо положить в папку терминала недостающие библиотеки.
Решение для каждого из способов:
1. Включить в состав DLL. Компилировать проект в статической DLL. Свойства проекта - Свойства конфигурации - Использование MFC - Использовать MFC в статической библиотеке.
2. Положить в папку недостающие библиотеки. Открыть DLL при помощи Dependency Walker и просмотреть, на какие DLL (из MFC) она ссылается. У меня, чаще всего, это: mfc100ud.dll, msvcp100d.dll и msvcr100d.dll.
- www.dependencywalker.com
Речь идет об MFC? Если да, то можно читать дальше.
Библиотека должна быть именно 32-хбитная. Ошибка 126 свидетельствует о том, что терминал не может найти все DLL, на которые ссылается исходная библиотека. Таким образом, нужно либо включить в состав DLL все библиотеки, на которые она ссылается, либо положить в папку терминала недостающие библиотеки.
Решение для каждого из способов:
1. Включить в состав DLL. Компилировать проект в статической DLL. Свойства проекта - Свойства конфигурации - Использование MFC - Использовать MFC в статической библиотеке.
2. Положить в папку недостающие библиотеки. Открыть DLL при помощи Dependency Walker и просмотреть, на какие DLL (из MFC) она ссылается. У меня, чаще всего, это: mfc100ud.dll, msvcp100d.dll и msvcr100d.dll.
MFC не используется, ничего военного в этой DLL нет, всегда и везде она работала.
Это DLL из моей статьи https://www.mql5.com/ru/articles/1361
Единственное, что может показаться необычным то, что она создает процесс в фоновом режиме(без консоли).
вот это место:
ZeroMemory( &gk_Si, sizeof(gk_Si)); gk_Si.cb = sizeof(gk_Si); ZeroMemory( &gk_Pi, sizeof(gk_Pi)); // Start the child process that will Server/Clients if( !CreateProcess( gt_ModuleName, // Module name NULL, // Command line NULL, // Process handle not inheritable NULL, // Thread handle not inheritable FALSE, // Set handle inheritance to FALSE #if _DEBUG 0, // No any flags #else DETACHED_PROCESS, // No console #endif NULL, // Use parent's environment block NULL, // Use parent's starting directory &gk_Si, // Pointer to STARTUPINFO structure &gk_Pi // Pointer to PROCESS_INFORMATION structure )
т.е., в этой OS Windows Server 2008 DataCebter может не быть этой Windows API CreateProcess ?
- www.mql5.com
Речь идет об MFC? Если да, то можно читать дальше.
Библиотека должна быть именно 32-хбитная. Ошибка 126 свидетельствует о том, что терминал не может найти все DLL, на которые ссылается исходная библиотека. Таким образом, нужно либо включить в состав DLL все библиотеки, на которые она ссылается, либо положить в папку терминала недостающие библиотеки.
Решение для каждого из способов:
1. Включить в состав DLL. Компилировать проект в статической DLL. Свойства проекта - Свойства конфигурации - Использование MFC - Использовать MFC в статической библиотеке.
2. Положить в папку недостающие библиотеки. Открыть DLL при помощи Dependency Walker и просмотреть, на какие DLL (из MFC) она ссылается. У меня, чаще всего, это: mfc100ud.dll, msvcp100d.dll и msvcr100d.dll.
Получилось, установил туда Visual Studio 2010 redistributional, там было все чего не хватало..
Спасибо, что указал направление...
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Такое вот дело, друзья, имею Window Server 2008, там конфигурация 64 бита.
устанавливаю ка положено для МТ4 свою Dll, сконфигурированную в Visual Studio 2010 как win32, в MQL4\Library\
получаю - код 126 - система не может найти мою DLL.
ладно, конфигурирую эту DLL в Visual Studio 2010 как x64,
теперь получаю код 193 - DLL не является программой win32,
т.е. делаю вывод, что модуль собственно находится, но грузиться не хочет...
Есть у кого-то какие-то намеки на решение этой незадачи ?