Create Qt DLL usable from VB
-
wrote on 15 Nov 2018, 14:40 last edited by Bastien
Hi,
I try to create a Qt QLL who can be used from VB script.
I create a lbrary Qt project.
Here is my test.cpp:#include "test.h" DWORD __stdcall DllRegisterServer() { return 0; } DWORD __stdcall DllUnregisterServer() { return 0; } DWORD __stdcall runApp() { return 0; }
Here is my test.h:
#ifndef TEST_H #define TEST_H #include <windows.h> extern "C" DWORD __stdcall DllRegisterServer(); extern "C" DWORD __stdcall DllUnregisterServer(); extern "C" DWORD __stdcall runApp(); #endif // TEST_H
And here is my .h file:
TARGET = testapp TEMPLATE = lib DEFINES += QT_DEPRECATED_WARNINGS CONFIG += c++11 SOURCES += \ test.cpp HEADERS += \ test.h # Default rules for deployment. qnx: target.path = /tmp/$${TARGET}/bin else: unix:!android: target.path = /opt/$${TARGET}/bin !isEmpty(target.path): INSTALLS += target
My Dll build with success and with no error.
I can execute the command regsvr32 on my dll with success.
But from my VB script I can't call runApp() function.
Vba error when i call the dll:
My VB script:
Option Explicit Public Declare PtrSafe Function runApp Lib "C:\Users\212721485\Documents\build-Qtdll_test-Desktop_Qt_5_12_0_MinGW_64_bit-Debug\debug\Qtdll_test.dll" () As LongPtr Public Sub testRunApp() Dim lRetCode As LongPtr lRetCode = runApp MsgBox "runApp a retourné le code " & lRetCode, vbOKOnly Or vbSystemModal Or vbInformation, "test de DLL" End Sub
This code works fine in Visual Studio but not in QtCreator... Why ?
-
Hi,
I try to create a Qt QLL who can be used from VB script.
I create a lbrary Qt project.
Here is my test.cpp:#include "test.h" DWORD __stdcall DllRegisterServer() { return 0; } DWORD __stdcall DllUnregisterServer() { return 0; } DWORD __stdcall runApp() { return 0; }
Here is my test.h:
#ifndef TEST_H #define TEST_H #include <windows.h> extern "C" DWORD __stdcall DllRegisterServer(); extern "C" DWORD __stdcall DllUnregisterServer(); extern "C" DWORD __stdcall runApp(); #endif // TEST_H
And here is my .h file:
TARGET = testapp TEMPLATE = lib DEFINES += QT_DEPRECATED_WARNINGS CONFIG += c++11 SOURCES += \ test.cpp HEADERS += \ test.h # Default rules for deployment. qnx: target.path = /tmp/$${TARGET}/bin else: unix:!android: target.path = /opt/$${TARGET}/bin !isEmpty(target.path): INSTALLS += target
My Dll build with success and with no error.
I can execute the command regsvr32 on my dll with success.
But from my VB script I can't call runApp() function.
Vba error when i call the dll:
My VB script:
Option Explicit Public Declare PtrSafe Function runApp Lib "C:\Users\212721485\Documents\build-Qtdll_test-Desktop_Qt_5_12_0_MinGW_64_bit-Debug\debug\Qtdll_test.dll" () As LongPtr Public Sub testRunApp() Dim lRetCode As LongPtr lRetCode = runApp MsgBox "runApp a retourné le code " & lRetCode, vbOKOnly Or vbSystemModal Or vbInformation, "test de DLL" End Sub
This code works fine in Visual Studio but not in QtCreator... Why ?
wrote on 15 Nov 2018, 15:03 last edited by@Bastien
Your error message, which is shown truncated, shows a full path name, and a "file not found" message:- What is the full path in the message, and does it exist?
- I don't know, but if it is a DLL, and if that DLL does exist but it has dependencies on other DLLs which are not found, might that give the same error message? In which case, maybe the path where it is set to search for additional DLLs is different within VS than outside, and that is why it only works from VS?
-
@Bastien
Your error message, which is shown truncated, shows a full path name, and a "file not found" message:- What is the full path in the message, and does it exist?
- I don't know, but if it is a DLL, and if that DLL does exist but it has dependencies on other DLLs which are not found, might that give the same error message? In which case, maybe the path where it is set to search for additional DLLs is different within VS than outside, and that is why it only works from VS?
-
@JonB
My full path is good.
And my dll has only Windows.h dependency, this library is contained by default.
The same code in Visual Studio work fine but not in Qt Creator.
I think that it's because of build options. -
The same code in Visual Studio work fine but not in Qt Creator.
And when you build it in Visual Studio you are using the MinGW compiler, not the MSVC one, just like you show you are using from Qt Creator, right?
-
wrote on 16 Nov 2018, 11:46 last edited by JonB
I build with MinGW on Qt Creator. And when I use DLL, I've the error.
I didn't ask you that. I know that. That's why I asked you:
And when you build it in Visual Studio you are using the MinGW compiler, not the MSVC one, just like you show you are using from Qt Creator, right?
So I asked you what compiler you are using from Visual Studio, not Qt Creator.
Having to make a guess and assuming you use MinGW from Qt Creator but MSVC from VS, I imagine that is precisely the answer to your:
This code works fine in Visual Studio but not in QtCreator... Why ?
1/6