Я создал динамическую 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 ++?
если так, что я должен делать?
спасибо!