DLL из под mingw+QtCreator

 
Привет всем! Ребята кто-нибудь собирал dll из под (mingw) creatorа? и меня что-то не получилось, библиотеку собрал, а подключать не получилось к советнику.. а второе как вообще отлаживать dll, нужно же подключаться отладчиком к терминалу, тоже не вышло отладчик зависает, подскажите что не так?
 

Если поможет, отрывок из Makefile который строил DLL в mingw gcc:

commonvars.dll: commonvars.o

        gcc -shared -pthread -o commonvars.dll commonvars.o -Wl,--kill-at,--output-def,commonvars.def,--out-implib,commonvars.a

-pthread необязательно (это у меня просто там потоки и мутексы были)

и это для MT4 (то есть 32 бита).
 

Не получается по прежнему не хочет видеть функции. Хотя в зависимостях все функции нашел, ума не приложу что ему нужно.

Cannot call 'DLLSample.dll::GetIntValue', 'DLLSample.dll' is not loaded

Cannot load 'C:\Program Files\MetaTrader 4 - RoboForex\MQL4\Libraries\DLLSample.dll' [126]


Проект я прикрепил, может в make файле что-то лишние?

На счет отладки, понял что отладчиком подключиться не получится к терминалу, буду через файл трассировать тогда. 

Самое интересное ещё то, что подсунув либу из примера (103kb) и она тоже не работает....

Файлы:
DLLSample.zip  97 kb
 

Ваша dll зависит от libgcc_s_dw2-1.dll

Положите её в папку MQL4\Libraries.

А лучше постарайтесь избавиться от этой зависимости.

 

QT использует кучу своих Q...dll библиотек, и по дефолту не включает их в скомпилированное приложение или новую библиотеку, а использует динамически.

Сделайте так - создайте новое Qt приложение, добавьте в него весь код вашей библиотеки, и вызовите нужные функции в конструкторе приложения, например.
Запустите приложение (не через QtCreator, а даблкликом мышки по exe файлу), в итоге увидите кучу ошибок о зависимостях, там будет не только libgcc_s_dw2-1.dll но и куча недостающих Q....dll файлов.
Ищите эти файлы где-то в C:/Qt/bin/ (не помню полный путь), и кидайте файлы в папку с exe, запускайте его ещё раз, будут новые недостающие зависимости, продолжайте копировать файлы.

Потом эти-же файли кидайте в папку с dll (Windows и mt5 их подцепит их или нет в таком случае? если нет, то нужно папку добавить в PATH) 

 
Dr.Trader:

QT использует кучу своих Q...dll библиотек, и по дефолту не включает их в скомпилированное приложение или новую библиотеку, а использует динамически.

Сделайте так - создайте новое Qt приложение, добавьте в него весь код вашей библиотеки, и вызовите нужные функции в конструкторе приложения, например.
Запустите приложение (не через QtCreator, а даблкликом мышки по exe файлу), в итоге увидите кучу ошибок о зависимостях, там будет не только libgcc_s_dw2-1.dll но и куча недостающих Q....dll файлов.
Ищите эти файлы где-то в C:/Qt/bin/ (не помню полный путь), и кидайте файлы в папку с exe, запускайте его ещё раз, будут новые недостающие зависимости, продолжайте копировать файлы.

Потом эти-же файли кидайте в папку с dll (Windows и mt5 их подцепит их или нет в таком случае? если нет, то нужно папку добавить в PATH) 

немного добавлю - в документации Qt есть раздел deployment, где расписано как "распростанять" полученный результат (программу/dll). Какие библиотеки и ресурсы брать "с собой", куда и как раскладывать.

желательно иметь в виртуалке "чистый образ" windows c установленым только MT и повторять эксперименты на нём, иначе при миграции на VDS могут ожидать большие и неприятные сюрпризы.

 
Все получилось, спасибо! убрал зависимость от libgcc_s_dw2-1.dll
Причина обращения: