dll created with qt5 used for mt5(metaquotes5) gives the error "unresolved import function call"
-
i'v created a dynamic dll using qt5 c++ library.
if the dll's functions won't use the Qt specicify things like QString QList ...etc...
and erything goes well.
but when the dll's function refernece to some Qt "inner" things as i describe earily. and the mt5
show the error "unresovled import function call",and the dll can not be loaded!simple codes will say clearly:
for example : the dll has a function add:extern "C"{ __declspec(dllexport) int __stdcall add(int a,int b){ return a+b; } }
and the dll did well ,it can give the expected results; but if i add something Qt specify for example:
#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; } }
as you can see ,i add the QString;
and the dll will not be loaded,and throw errors.
so the question is: can the qt5 make a dll used for a C interface instead c++?
if so what i should do?
thanks -
What deserves to be mentioned : i can use any stl in the dll function without any error
just like this:#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; } }
the dll also works.
it's very strange. QString vs std::string, qtl vs stl....that's a little interesting! -
-
Did you saw that
__declspec
has to change when you build the library and when someone wants to use it ? -
@guzuomuse said in dll created with qt5 used for mt5(metaquotes5) gives the error "unresolved import function call":
mt5
Your Lib is not loaded while using Qt specific keywords because your lib is depends on other Qt dlls, use dependency injector or something to check on what dll's your dll is dependent.
-
See the Creating Shared Libraries chapter of Qt's documentation.
-
mank thanks to you both;
finally, i solved this problem. in fact it's very easy.
@TobbY is absolutely right.
just put the dependencies dlls(here the only one Qt5Core.dll) and my dll in the same dir.
i code the absolute path in the mql5,but left the dependency dll on the mt5's library before. that's not right.
i'm so stupid! so i should give trust on the qt. it's my fault