-
Notifications
You must be signed in to change notification settings - Fork 17
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Windows support #27
Comments
Thanks! How did you manage to compile them? I'd like to reproduce the issue. |
I tried to tinker with the C code and calling |
I think I know what it is. On interface.h line 12 there is an argument named |
That worked! Now only the linker has a problem:
I guess this has something to do with
Applying the flags from the else branch in the Makefile doesn't help... |
Changing Thanks @suy for providing the solution! Now I'll check if it actually works 😟 |
Hello Daniel, I'm a fan of Qt, QML and Ruby and I'm on Windows, so did you get it to work eventually ? Mind to share ? |
I could compile and link all the libraries, but I could not get any application to start, because qml.so doesn't find all required DLLs at runtime. Unfortunately there are only generic error messages and DependencyWalker only got me so far... I eventually settled for GTK, which works on Windows out of the box (http://ruby-gnome2.osdn.jp) |
Hi, daniel, what are the names of the DLL files missing? |
I don't know, that is the problem 😄 Even Dependency Walker can't tell me. (At least I didn't found it) The error message is "The specified procedure could not be found" when loading qml.so. That means that either qml.so (unlikely) or one of its dependent modules (most likely) tries to call a library method which isn't there. But no information on the library or procedure in question... |
@daniel-rikowski The error is a little difference with yours, this is it: d:\bullshit\ruby>ruby bs03.rb
d:/rubies/ruby-2.1.6-i386-mingw32/lib/ruby/gems/2.1.0/gems/qml-1.0.2/lib/qml/qml.rb:1:in`require_relative': 126: The specified module could not be found. -d:/rubies/ruby-2.1.6-i386-mingw32/lib/ruby/gems/2.1.0/gems/qml-1.0.2/ext/qml/qml.so (LoadError)
from d:/rubies/ruby-2.1.6-i386-mingw32/lib/ruby/gems/2.1.0/gems/qml-1.0.2/lib/qml/qml.rb:1:in `<top (required)>'
from d:/rubies/ruby-2.1.6-i386-mingw32/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from d:/rubies/ruby-2.1.6-i386-mingw32/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from d:/rubies/ruby-2.1.6-i386-mingw32/lib/ruby/gems/2.1.0/gems/qml-1.0.2/lib/qml.rb:3:in`<top (required)>'
from d:/rubies/ruby-2.1.6-i386-mingw32/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:133:in `require'
from d:/rubies/ruby-2.1.6-i386-mingw32/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:133:in `rescue in require'
from d:/rubies/ruby-2.1.6-i386-mingw32/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:40:in `require'
from bs03.rb:1:in `<main>' It's strange since depends.exe tells no real loading error, as shown below: Maybe I should compile Qt 5.7 myself with devkit 4.7.2 which used by ruby 2.0 and above for Windows. |
tl;dr: It works. 😀 I used the wrong MinGW runtime libraries. @arloan Your notes gave me the right idea. This is what I did before:
Now you mentioning the different MinGW version made me rethink the various compilers involved:
But it is only qmlbind.dll which needs the runtime libraries, specifically the ones from the Qt compiler. My error was using the Ruby / DevKit versions. So the required files were there but since DevKit is older than the Qt ones there were some exports missing. Thank you all for your input! I was about to play some Fallout 4 this weekend, but this is even better 😉 |
@daniel-rikowski My situation is more complex. So I had to compile libqmlbind by manual, using Qt's MinGW command line environment. I'm still in finding an automatic way to handle this. The qml.so depends on qmlbind.dll, while after the gem is compiled and installed, qmlbind.dll still remains in the libqmlbind/qmlbind/release directory, so qml.so still cannot load by Another problem comes with Qt 5.7.0 and my sandybridge GPU, when I run a qml script, Qt reports some render errors: QOpenGLShader::link: Failed to create D3D shaders.
shader compilation failed:
"Failed to create D3D shaders.\n"
QOpenGLShader::link: Failed to create D3D shaders.
Failed to create D3D shaders. The app window's client area becomes black brick-ed when resized, and render errors continue bumping out. See below: I have to copy and replace libEGL.dll and libGLESv2.dll in Qt's Finally, ruby-qml is happy. :-) |
Hi Daniel and Arloan, nice work. QML has always interested me but on the Peter 2016-08-06 15:04 GMT+02:00 daniel-rikowski [email protected]:
|
I wrote a blog for this whole procedure. |
Very nice blog post! Judging from bug reports (e.g. QTBUG-53680) the 3D shader problem in Qt 5.7 might also be fixed by updating DirectX. |
Yeah, I know that, but I'm too lazy to update DirectX. ;-) |
I know that ruby-qml doesn't officially support Windows, but I tried it anyway.
After some experimenting I was able to compile
libqmlbind
andrubyqml-plugin
, but the final compilation of the extension fails.Commenting out the offending lines leads to the same error message at other places, too.
This doesn't look like a platform problem. Is there any hope for Windows compatibility? Is there something I can do?
My environment: Windows 10, Ruby 2.2.3, Qt 5.5.1
The text was updated successfully, but these errors were encountered: