dll, созданная qt5, используемая для mt5 (metatrader5), не может быть загружена с указанными объектами qt - PullRequest
0 голосов
/ 12 сентября 2018

Я создал динамическую DLL, используя библиотеку qt5 c ++. если функции dll не будут использовать специфицированные Qt вещи, такие как QString QList ... и т.д ... и все идет хорошо. но когда функция dll ссылается на некоторые "внутренние" вещи Qt, которые я описал ранее. и MT5 покажите ошибку "нереализованный вызов функции импорта", и dll не может быть загружена!

простые коды скажут ясно: например: в dll есть функция add:

extern "C"{
__declspec(dllexport) int __stdcall add(int a,int b){
      return a+b;        
   }
}

и dll преуспели, это может дать ожидаемые результаты; но если я добавлю что-то Qt, укажите, например:

#include <QString>
extern "C"{
__declspec(dllexport) int __stdcall add(int a,int b){
      QString my_test_str="no actual functional capability,just for testing";
      return a+b;        
   }
}

как видите, я добавляю QString; и dll не загрузится, а выкинет ошибки.

Что заслуживает упоминания: я могу использовать любой STL в функции DLL без каких-либо ошибок просто так:

#include <vector>
extern "C"{
__declspec(dllexport) int __stdcall add(int a,int b){
     std::string string="my test string";
     std::vector<const char*> my_test_vector[3];
     my_test_vector.push_back("my test string");
      return a+b;        
   }
}

DLL также работает. это очень странно QString vs std :: string, qtl vs stl .... это немного интересно!

поэтому вопрос в том, может ли qt5 создать dll для интерфейса C вместо c ++? если так, что я должен делать?

спасибо!

...