Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct
QT use DLL from VC6
youfulan2015 last edited by
I got DLL build by vc6 ,here is the function inside:
#define DLL_API extern "C" __declspec(dllimport)
#define WIN_API __stdcall
DLL_API void WINAPI HTDrawTopPentagon(HDC hDC,int nCenterX,int nCenterY,COLORREF clr);
in QT I want to use these funtions.
will it work if I program a QT project like this:
typedef int (MyPrototype)(QPixmap ,int,int,QColor);
MyPrototype myFunction = (MyPrototype) myLib.resolve("HTDrawTopPentagon");
will test work?
or should i typedef int (*MyPrototype)(HDC ,int,int,COLORREF);in QT?
msue last edited by
The function has no "int" return but "void".
hskoglund last edited by hskoglund
Hi, calling functions in VC6 DLLs is possible, easiest I think is to declare them for example:
auto HTDrawTopPentagon = (int (WINAPI *)(HDC,int,int,COLORREF)) QLibrary("dll_name").resolve("HTDrawTopPentagon");
then to call it, first you need to have a DC, which I think you cannot get from a QPixmap, to test you can use your MainWindow's winId. Also I think you need to convert from QColor to COLORREF. So perhaps something like this:
QColor qcolor("red"); HTDrawTopPentagon(GetDC(HWND(this->winId())),100,100,RGB(qcolor.red(),qcolor.green(),qcolor.blue()));
@msue: Yes I saw that now, but it shouldn't matter.
Edit: if you're using MinGW compiler, you need to add CONFIG += c++11 to your .pro file.