[Development] Using qml.exe with a custom QML_ELEMENT plugin
Elias Steurer
kelteseth at googlemail.com
Thu Oct 26 15:29:00 CEST 2023
I launch the qml app with these arguments (via VSCode launch.json):
"args": ["-I", "C:\\Code\\cpp\\build_Hello_Debug","-f",
"C:\\Code\\cpp\\qml-plugin-minimal\\Main.qml", ],
* My example project contains a simple Main.qml. with my Hello QML_ELEMENT
o "C:\Code\cpp\qml-plugin-minimal\Main.qml"
* Build dir has a World.dll
o "C:\Code\cpp\build_Hello_Debug\World.dll"
* Below it contains the plugin in the Hello/World subdir:
o "C:\Code\cpp\build_Hello_Debug\Hello\World\Worldplugin.dll"
Hello {
id:hello
Component.onCompleted: {
hello.speak()
}
}
Then when calling qml.exe it prints, see the first entry:
Modified PATH: "C:\\Code\\cpp\\build_Hello_Debug;C:\\Program
Files\\Common
Files\\Oracle\\Java\\javapath;C:\\VulkanSDK\\1.3.231.1\\Bin;C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;C:\\Windows\\System32\\OpenSSH\\;C:\\ProgramData\\chocolatey\\bin;C:\\Users\\Eli\\Apps\\platform-tools;C:\\Program
Files (x86)\\Tailscale IPN;C:\\Program
Files\\dotnet\\;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;C:\\WINDOWS\\System32\\OpenSSH\\;C:\\Program
Files (x86)\\CodeMeter\\DevKit\\bin\\;C:\\Program Files
(x86)\\CodeMeter\\Runtime\\bin\\;C:\\Program
Files\\LLVM\\bin;C:\\Program Files\\doxygen\\bin;C:\\Program Files
(x86)\\GitExtensions\\;C:\\Program Files\\nodejs\\;C:\\Program
Files\\AMD\\AMDuProf\\bin;C:\\Program
Files\\Docker\\Docker\\resources\\bin;C:\\Program
Files\\CMake\\bin;C:\\Program Files\\Git\\cmd;C:\\Program
Files\\Tailscale\\;C:\\Program Files\\RedHat\\Podman\\;C:\\Program
Files\\PowerShell\\7\\;C:\\Users\\Eli\\AppData\\Local\\Programs\\Python\\Python311\\Scripts\\;C:\\Users\\Eli\\AppData\\Local\\Programs\\Python\\Python311\\;C:\\Program
Files\\platform-tools;C:\\Users\\Eli\\.cargo\\bin;C:\\Users\\Eli\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\Eli\\Apps;C:\\Users\\Eli\\AppData\\Local\\Android\\Sdk\\platform-tools;C:\\gitlab_runner;C:\\ProgramData\\chocolatey\\lib\\deno;C:\\Users\\Eli\\AppData\\Roaming\\npm;C:\\Users\\Eli\\.dotnet\\tools;C:\\Users\\Eli\\AppData\\Local\\Programs\\Microsoft
VS Code\\bin"
*When removing my code:*
QQmlApplicationEngine failed to load component
file:///C:/Code/cpp/qml-plugin-minimal/Main.qml:5:1: Cannot load library
C:\Code\cpp\build_Hello_Debug\Hello\World\Worldplugin.dll: The specified
module could not be found.
qml: Did not load any objects, exiting.
On 26/10/2023 15:14, Ulf Hermann via Development wrote:
>> I can confirm a simple:
>>
>> for (const QString &importPath : parser.values(importOption)){
>> QByteArray path = qgetenv("PATH");
>> QByteArray newPath = importPath.toLocal8Bit() + ";";
>> newPath += path;
>> qputenv("PATH", newPath);
>> qDebug() << "Modified PATH:" << qgetenv("PATH");
>> e.addImportPath(importPath);
>> }
>
> I don't quite understand why this works. Can you show the directory
> layout in the respective import path? Where do the files end up?
>
> In any case, it should be specific to windows, so please add an
> "#ifdef Q_OS_WIN". The best place to discuss this is actually the code
> review system. You don't necessarily have to open a feature ticket.
>
> cheers,
> Ulf
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/development/attachments/20231026/629576e0/attachment-0001.htm>
More information about the Development
mailing list