MQL4. Ошибка 126 при подключении внешней dll - страница 2

 
gammaray:
Естественно)

вот Makefile, от моего старого проекта, который точно работает - посмотри чего там в гуи проекта недовыставил

MYSQL_INCLUDE="C:\src\BWriter\mysql-connector-c-6.1.6-win32\include"
MYSQL_LIBPATH="C:\src\BWriter\mysql-connector-c-6.1.6-win32\lib"

all: BWriter.dll BWriterTest.exe

BWriter.obj: BWriter.c
        cl /MD /I$(MYSQL_INCLUDE) /DDLL -c BWriter.c

BWriterTest.obj: BWriterTest.c
        cl /MD /I$(MYSQL_INCLUDE) -c BWriterTest.c
       
BWriter.dll: BWriter.obj
        link /DEF:BWriter.def /OUT:BWriter.dll BWriter.obj /LIBPATH:$(MYSQL_LIBPATH) libmysql.lib User32.lib Kernel32.lib

BWriterTest.exe: BWriterTest.obj BWriter.dll
        cl /MD BWriterTest.obj /link /LIBPATH:$(MYSQL_LIBPATH) BWriter.lib libmysql.lib User32.lib Kernel32.lib

плюс должен быть файл определение *.def и в самих исходниках чОрное шаманство с __declspec(dllexport)

PS/ студией пользуюсь исключительно из командной строки, поэтому где ткнуть мышом неподскажу

 
Как за 10 минут написать DLL библиотеку для MQL5 и обмениваться данными?
Как за 10 минут написать DLL библиотеку для MQL5 и обмениваться данными?
  • 2010.01.27
  • Renat Fatkhullin
  • www.mql5.com
Так уж сложилось, что сейчас мало кто из разработчиков помнит, как написать простую DLL библиотеку и в чем особенности связывания разнородных систем. Я постараюсь за 10 минут на примерах продемонстрировать весь процесс создания простых DLL библиотек и раскрою некоторые технические детали нашей реализации связывания. Покажу пошаговый процесс создания DLL библиотеки в Visual Studio с примерами передачи разных типов переменных (числа, массивы, строки и т.д.) и защиту клиентского терминала от падений в пользовательских DLL.
 

РУКАЛИЦО...

Разобрался... Запутался я в папках своих терминалов) Их несколько (на одном реально торгую, другие для программирования и тестирования на демо-счетах). Оказывается я dll тупо не в ту папку кидал))) Еще удивился, почему все стало работать, когда я эту папку в переменную среды PATH прописал))) 

 
Спасибо, может что полезного найду;)
 
Сразу в догонку вопрос (хоть и не по теме...). Можно ли как-то скрыть отображение зависимостей во вкладке Зависимости при запуске эксперта? Очень не хотелось бы, чтобы юзер видел, какие функции из каких библиотек вызываются
 
И еще. Время от времени проскакивает вот такая ошибка: " Access violation read to 0x0060FFFF in '...\MQL4\Libraries\Test.dll' " - с чем она может быть связана?

 
gammaray:
И еще. Время от времени проскакивает вот такая ошибка: " Access violation read to 0x0060FFFF in '...\MQL4\Libraries\Test.dll' " - с чем она может быть связана?

типы непреведены и упахался стек при вызове, MQL-вский int это int64_t об этом надо помнить
 
gammaray:
Сразу в догонку вопрос (хоть и не по теме...). Можно ли как-то скрыть отображение зависимостей во вкладке Зависимости при запуске эксперта?
нет.
 
Maxim Kuznetsov:
типы непреведены и упахался стек при вызове, MQL-вский int это int64_t об этом надо помнить

Точно, спасибо!

Странно только, что ошибка то была, то иногда с обычным интом в dll прокатывало

 UPD. И все равно время от времени проскакивает... 

UPD2. Проблема была в передаче строк. Сделал передачу через wchar_t* (как в примере по ссылке выше) и все ок. И кстати ни в одном хэлпе (ни MQL4, ни MQL5) я не нашел указания, что  "MQL-вский int это int64_t об этом надо помнить"

 
gammaray: И кстати ни в одном хэлпе (ни MQL4, ни MQL5) я не нашел указания, что  "MQL-вский int это int64_t об этом надо помнить"
Потому что это не так. Для MQL4 и 32-разрядного MQL5 int это 4 байта.
Причина обращения: