Qt Quick / QML bindings for Rust

Overview

qmlrsng

Qt Quick bindings for Rust, based on libqmlbind.

The crate libqmlbind-sys wraps libqmlbind C library in Rust and exposes an unsafe API. The goal of qmlrsng is to create a safe abstraction over the libqmlbind-sys crate.

NOTE: This create is empty for the moment, waiting for a workable libqmlbind-sys crate.

Build Status

Synopsis

Rust is a fantastic programming language. It exposes high level features that can be found in, say, Python, while retaining the low level control that C offers. In addition, the type system and ownership model is a strong ally and prevents issues that only static anaylizers might detect in C/C++.

C and C++ does offer great libraries though, one of them being Qt which is increasingly used in the embedded industry, mostly through Qt Quick and QML. Wrapping Qt in Rust has been tried but is quite difficult and painful, due to the C++ aspect of Qt.

Furthermore, I believe QML is becoming more interesting than Qt for new projects. It is a framework to create modern applications, on any device from phone to full car infotainment systems to desktops. Being able to use Qt Quick / QML from Rust would certainly have a stronger impact than Qt. Additionally, since code can be written in QML directly, shortcomings of a Rust wrapper could be overcome by writting some QML, something which would not be possible with Qt.

While Rust has an easy way to interface with C code through its Foreign Function Interface (ffi), C++ code cannot be used directly. This makes it hard to come up with a Rust wrapper to QML, see for example qmlrs.

Fortunately, Rust is not the only language wanting to access the power of QML. libqmlbind was written as a C wrapper to QML to be used by Ruby. An issue for qmlrs suggested re-writting it over libqmlbind; Since I am looking for excuses to write Rust code, I decided to give it a try.

Organization

This repository contains two crates. The first one is libqmlbind-sys which simply exposes libqmlbind's C interface as (unsafe) Rust. It's source was generated using bindgen.

The second crate is qmlrsng for qmlrs "next generation". I liked the qmlrs name but did not wanted to confuse anybody by using qml-rs so simply appended ng. I'm open to name suggestions! This crate should be a safe wrapper for libqmlbind-sys. It is empty for now until the unsafe wrapper is more complete.

Licensing

The code in these two libraries is dual-licensed under the MIT license and the Apache License (version 2.0). See LICENSE-APACHE and LICENSE-MIT for details.

You might also like...
Idiomatic Rust bindings for Pdfium

Idiomatic Rust bindings for Pdfium pdfium-render provides an idiomatic high-level Rust interface around the low-level bindings to Pdfium exposed by th

Wein2D.js bindings for creating browser games in Rust using WebAssembly.

Wein2D.js-WASM Wein2D.js bindings for creating browser games in Rust using WebAssembly. Wein2D.js-WASM requires Wein2d.js to be loaded in the same doc

A simple Verlet integration solver written using the Rust SDL2 bindings.
A simple Verlet integration solver written using the Rust SDL2 bindings.

Rust Verlet Solver A simple Verlet integration solver written using the Rust SDL2 bindings. Where's the friction?! Building cargo-vcpkg is required in

MMDeploy bindings for Rust.

rust-mmdeploy-sys MMDeploy bindings for Rust. 🚧 THIS REPO IS STILL UNDER CONSTRUCTION! Prerequisites NOTICE: Linux only. Onnxruntime only. In order t

Rust bindings for googleprojectzero/TinyInst

tinyinst-rs FFI to TinyInst. Created for LibAFL. Dependencies cxxbridge cargo-make python3 git Running the test Open a terminal and set up your build

Rust bindings for entity-gym.

EntityGym for Rust EntityGym is a Python library that defines a novel entity-based abstraction for reinforcement learning environments which enables h

A simple Verlet integration solver written using the Rust SDL2 bindings.
A simple Verlet integration solver written using the Rust SDL2 bindings.

Rust Verlet Solver A simple Verlet integration solver written using the Rust SDL2 bindings. Where's the friction?! Building cargo-vcpkg is required in

corange-rs CorangeCorange lucidscape/corange-rs — Corange bindings

CORANGE-RS This crate provides an interface to the Corange game engine, written in Pure C, SDL and OpenGL by Daniel Holden. Features include: deferred

Pure and simple Vulkan bindings generated from Vulkan-Headers!
Pure and simple Vulkan bindings generated from Vulkan-Headers!

mira Pure and simple Vulkan bindings generated from Vulkan-Headers! Mira provides a simple and straightforward way to interact with Vulkan. Everything

Comments
  • Travis build is failing

    Travis build is failing

    Build is almost working, but fails near the end with:

    error: could not find native static library `qmlbind`, perhaps an -L flag is missing?
    error: Could not compile `libqmlbind-sys`.
    To learn more, run the command again with --verbose.
    The command "sh -c 'cd libqmlbind-sys && cargo build'" exited with 101.
    

    See for example: https://travis-ci.org/nbigaouette/qmlrsng/jobs/143500357

    libqmlbind-sys 
    opened by nbigaouette 3
  • Qt linking to icu: confusion between system-wide installed one and Qt provided one

    Qt linking to icu: confusion between system-wide installed one and Qt provided one

    Arch Linux provides Qt 5.7 and icu, installed system-wide:

    $ ldd /usr/lib/libQt5Core.so.5.7.0
        [...]
        libicui18n.so.57 => /usr/lib/libicui18n.so.57 (0x00007ff249892000)
        libicuuc.so.57 => /usr/lib/libicuuc.so.57 (0x00007ff2494ea000)
        libicudata.so.57 => /usr/lib/libicudata.so.57 (0x00007ff2464a8000)
        [...]
    $ pacman -Qo /usr/lib/libQt5Core.so.5.7.0
    /usr/lib/libQt5Core.so.5.7.0 is owned by qt5-base 5.7.0-1
    $ pacman -Qo /usr/lib/libicuuc.so.57
    /usr/lib/libicuuc.so.57 is owned by icu 57.1-1
    

    Installing Qt from the installer (qt-unified-linux-x64-2.0.3-1-online.run) will also install its own version:

    ldd ~/Qt/5.7/gcc_64/lib/libQt5Core.so.5.7.0
        [...]
        libicui18n.so.56 => ${HOME}/Qt/5.7/gcc_64/lib/libicui18n.so.56 (0x00007f53cb34c000)
        libicuuc.so.56 => ${HOME}/Qt/5.7/gcc_64/lib/libicuuc.so.56 (0x00007f53caf94000)
        libicudata.so.56 => ${HOME}/Qt/5.7/gcc_64/lib/libicudata.so.56 (0x00007f53c95b1000)
        [...]
    

    But compiling using Qt from the installer (QT_DIR=${HOME}/Qt/5.7/gcc_64) fails to link:

    cargo build --verbose --example hello_world
           Fresh libc v0.2.13
       Compiling libqmlbind-sys v0.0.2 (file://${HOME}/qmlrsng.git/libqmlbind-sys)
         Running `rustc examples/hello_world.rs --crate-name hello_world --crate-type bin -g --out-dir ${HOME}/qmlrsng.git/libqmlbind-sys/target/debug/examples --emit=dep-info,link -L dependency=${HOME}/qmlrsng.git/libqmlbind-sys/target/debug -L dependency=${HOME}/qmlrsng.git/libqmlbind-sys/target/debug/deps --extern libc=${HOME}/qmlrsng.git/libqmlbind-sys/target/debug/deps/liblibc-30d46fdd62f8c2eb.rlib --extern libqmlbind_sys=${HOME}/qmlrsng.git/libqmlbind-sys/target/debug/liblibqmlbind_sys.rlib -L libqmlbind/qmlbind -L ${HOME}/Qt/5.7/gcc_64/lib`
    examples/hello_world.rs:33:13: 33:22 warning: unused variable: `exit_code`, #[warn(unused_variables)] on by default
    examples/hello_world.rs:33         let exit_code = ffi::qmlbind_application_exec(app);
                                           ^~~~~~~~~
    examples/hello_world.rs:26:13: 26:24 warning: variable `errorString` should have a snake case name such as `error_string`, #[warn(non_snake_case)] on by default
    examples/hello_world.rs:26         let errorString = ffi::qmlbind_component_get_error_string(component);
                                           ^~~~~~~~~~~
    error: linking with `cc` failed: exit code: 1
    note: "cc" "-Wl,--as-needed" "-Wl,-z,noexecstack" "-m64" "-L" "${HOME}/.multirust/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "${HOME}/qmlrsng.git/libqmlbind-sys/target/debug/examples/hello_world.0.o" "-o" "${HOME}/qmlrsng.git/libqmlbind-sys/target/debug/examples/hello_world" "-Wl,--gc-sections" "-pie" "-nodefaultlibs" "-L" "${HOME}/qmlrsng.git/libqmlbind-sys/target/debug" "-L" "${HOME}/qmlrsng.git/libqmlbind-sys/target/debug/deps" "-L" "libqmlbind/qmlbind" "-L" "${HOME}/Qt/5.7/gcc_64/lib" "-L" "${HOME}/.multirust/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "-Wl,-Bdynamic" "${HOME}/qmlrsng.git/libqmlbind-sys/target/debug/liblibqmlbind_sys.rlib" "${HOME}/qmlrsng.git/libqmlbind-sys/target/debug/deps/liblibc-30d46fdd62f8c2eb.rlib" "${HOME}/.multirust/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-e8edd0fd.rlib" "${HOME}/.multirust/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcollections-e8edd0fd.rlib" "${HOME}/.multirust/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-e8edd0fd.rlib" "${HOME}/.multirust/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_unicode-e8edd0fd.rlib" "${HOME}/.multirust/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-e8edd0fd.rlib" "${HOME}/.multirust/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librand-e8edd0fd.rlib" "${HOME}/.multirust/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-e8edd0fd.rlib" "${HOME}/.multirust/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc_jemalloc-e8edd0fd.rlib" "${HOME}/.multirust/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-e8edd0fd.rlib" "${HOME}/.multirust/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-e8edd0fd.rlib" "-l" "Qt5Core" "-l" "Qt5Network" "-l" "Qt5Gui" "-l" "Qt5Qml" "-l" "Qt5Widgets" "-l" "icui18n" "-l" "icuuc" "-l" "icudata" "-l" "stdc++" "-l" "util" "-l" "dl" "-l" "pthread" "-l" "gcc_s" "-l" "pthread" "-l" "c" "-l" "m" "-l" "rt" "-l" "util" "-l" "compiler-rt"
    note: /usr/bin/ld: warning: libicui18n.so.56, needed by ${HOME}/Qt/5.7/gcc_64/lib/libQt5Core.so, not found (try using -rpath or -rpath-link)
    /usr/bin/ld: warning: libicuuc.so.56, needed by ${HOME}/Qt/5.7/gcc_64/lib/libQt5Core.so, not found (try using -rpath or -rpath-link)
    /usr/bin/ld: warning: libicudata.so.56, needed by ${HOME}/Qt/5.7/gcc_64/lib/libQt5Core.so, not found (try using -rpath or -rpath-link)
    ${HOME}/Qt/5.7/gcc_64/lib/libQt5Core.so: undefined reference to `u_strToLower_56'
    ${HOME}/Qt/5.7/gcc_64/lib/libQt5Core.so: undefined reference to `ucnv_getStandardName_56'
    ${HOME}/Qt/5.7/gcc_64/lib/libQt5Core.so: undefined reference to `ucnv_getAlias_56'
    ${HOME}/Qt/5.7/gcc_64/lib/libQt5Core.so: undefined reference to `uenum_next_56'
    ${HOME}/Qt/5.7/gcc_64/lib/libQt5Core.so: undefined reference to `u_strToUpper_56'
    ${HOME}/Qt/5.7/gcc_64/lib/libQt5Core.so: undefined reference to `ucnv_setSubstChars_56'
    ${HOME}/Qt/5.7/gcc_64/lib/libQt5Core.so: undefined reference to `ucal_getTimeZoneDisplayName_56'
    ${HOME}/Qt/5.7/gcc_64/lib/libQt5Core.so: undefined reference to `ucnv_fromUnicode_56'
    ${HOME}/Qt/5.7/gcc_64/lib/libQt5Core.so: undefined reference to `u_errorName_56'
    ${HOME}/Qt/5.7/gcc_64/lib/libQt5Core.so: undefined reference to `uenum_close_56'
    ${HOME}/Qt/5.7/gcc_64/lib/libQt5Core.so: undefined reference to `ucal_getDSTSavings_56'
    ${HOME}/Qt/5.7/gcc_64/lib/libQt5Core.so: undefined reference to `ucal_openTimeZoneIDEnumeration_56'
    ${HOME}/Qt/5.7/gcc_64/lib/libQt5Core.so: undefined reference to `ucal_setMillis_56'
    ${HOME}/Qt/5.7/gcc_64/lib/libQt5Core.so: undefined reference to `ucol_close_56'
    ${HOME}/Qt/5.7/gcc_64/lib/libQt5Core.so: undefined reference to `ucol_getSortKey_56'
    ${HOME}/Qt/5.7/gcc_64/lib/libQt5Core.so: undefined reference to `ucal_get_56'
    ${HOME}/Qt/5.7/gcc_64/lib/libQt5Core.so: undefined reference to `ucol_open_56'
    ${HOME}/Qt/5.7/gcc_64/lib/libQt5Core.so: undefined reference to `ucnv_compareNames_56'
    ${HOME}/Qt/5.7/gcc_64/lib/libQt5Core.so: undefined reference to `ucal_clone_56'
    ${HOME}/Qt/5.7/gcc_64/lib/libQt5Core.so: undefined reference to `ucal_open_56'
    ${HOME}/Qt/5.7/gcc_64/lib/libQt5Core.so: undefined reference to `ucol_setAttribute_56'
    ${HOME}/Qt/5.7/gcc_64/lib/libQt5Core.so: undefined reference to `ucal_openCountryTimeZones_56'
    ${HOME}/Qt/5.7/gcc_64/lib/libQt5Core.so: undefined reference to `ucnv_open_56'
    ${HOME}/Qt/5.7/gcc_64/lib/libQt5Core.so: undefined reference to `ucal_openTimeZones_56'
    ${HOME}/Qt/5.7/gcc_64/lib/libQt5Core.so: undefined reference to `ucnv_countAliases_56'
    ${HOME}/Qt/5.7/gcc_64/lib/libQt5Core.so: undefined reference to `ucal_inDaylightTime_56'
    ${HOME}/Qt/5.7/gcc_64/lib/libQt5Core.so: undefined reference to `ucal_close_56'
    ${HOME}/Qt/5.7/gcc_64/lib/libQt5Core.so: undefined reference to `ucnv_getAvailableName_56'
    ${HOME}/Qt/5.7/gcc_64/lib/libQt5Core.so: undefined reference to `ucnv_getDefaultName_56'
    ${HOME}/Qt/5.7/gcc_64/lib/libQt5Core.so: undefined reference to `ucal_getDefaultTimeZone_56'
    ${HOME}/Qt/5.7/gcc_64/lib/libQt5Core.so: undefined reference to `ucnv_toUnicode_56'
    ${HOME}/Qt/5.7/gcc_64/lib/libQt5Core.so: undefined reference to `ucol_strcoll_56'
    ${HOME}/Qt/5.7/gcc_64/lib/libQt5Core.so: undefined reference to `ucnv_close_56'
    ${HOME}/Qt/5.7/gcc_64/lib/libQt5Core.so: undefined reference to `ucnv_getMaxCharSize_56'
    ${HOME}/Qt/5.7/gcc_64/lib/libQt5Core.so: undefined reference to `ucnv_countAvailable_56'
    collect2: error: ld returned 1 exit status
    
    error: aborting due to previous error
    error: Could not compile `libqmlbind-sys`.
    
    Caused by:
      Process didn't exit successfully: `rustc examples/hello_world.rs --crate-name hello_world --crate-type bin -g --out-dir ${HOME}/qmlrsng.git/libqmlbind-sys/target/debug/examples --emit=dep-info,link -L dependency=${HOME}/qmlrsng.git/libqmlbind-sys/target/debug -L dependency=${HOME}/qmlrsng.git/libqmlbind-sys/target/debug/deps --extern libc=${HOME}/qmlrsng.git/libqmlbind-sys/target/debug/deps/liblibc-30d46fdd62f8c2eb.rlib --extern libqmlbind_sys=${HOME}/qmlrsng.git/libqmlbind-sys/target/debug/liblibqmlbind_sys.rlib -L libqmlbind/qmlbind -L ${HOME}/Qt/5.7/gcc_64/lib` (exit code: 101)
    

    It seems cargo is trying to link to the system wide icu instead of the one provided by the installer.

    Linux libqmlbind-sys 
    opened by nbigaouette 3
  • rpath problem on OSX

    rpath problem on OSX

    Compiled example cannot find Qt on OSX due to an rpath issue.

    $ cd libqmlbind-sys
    $ cargo build --example hello_world
    
    $ otool -L target/debug/examples/hello_world
    target/debug/examples/hello_world:
        @rpath/QtCore.framework/Versions/5/QtCore (compatibility version 5.7.0, current version 5.7.0)
        @rpath/QtNetwork.framework/Versions/5/QtNetwork (compatibility version 5.7.0, current version 5.7.0)
        @rpath/QtGui.framework/Versions/5/QtGui (compatibility version 5.7.0, current version 5.7.0)
        @rpath/QtQml.framework/Versions/5/QtQml (compatibility version 5.7.0, current version 5.7.0)
        @rpath/QtWidgets.framework/Versions/5/QtWidgets (compatibility version 5.7.0, current version 5.7.0)
        /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.1.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1)
    
    $ cat target/debug/build/libqmlbind-sys-8282f5495710b036/output
    cargo:rustc-flags=-L libqmlbind/qmlbind
    cargo:rustc-link-lib=static=qmlbind
    Environnement variable 'QT_DIR' not set!
    Defaulting to ${HOME}/Qt/${QT_VER}/${QT_COMP} where:
        QT_VER:  5.7
        QT_COMP: clang_64
    Using Qt directory: "${HOME}/Qt/5.7/clang_64"
    Use QT_DIR environment variable to ovewrite.
    cargo:rustc-link-search=framework=${HOME}/Qt/5.7/clang_64/lib
    cargo:rustc-link-lib=framework=QtCore
    cargo:rustc-link-lib=framework=QtNetwork
    cargo:rustc-link-lib=framework=QtGui
    cargo:rustc-link-lib=framework=QtQml
    cargo:rustc-link-lib=framework=QtWidgets
    cargo:rustc-flags=-l stdc++
    

    But then:

    $ cargo run --verbose --example hello_world
           Fresh libc v0.2.13
           Fresh libqmlbind-sys v0.0.2 (file:///${HOME}/qmlrsng.git/libqmlbind-sys)
         Running `target/debug/examples/hello_world`
    dyld: Library not loaded: @rpath/QtCore.framework/Versions/5/QtCore
      Referenced from: ${HOME}/qmlrsng.git/libqmlbind-sys/target/debug/examples/hello_world
      Reason: image not found
    error: Process didn't exit successfully: `target/debug/examples/hello_world` (signal: 5, SIGTRAP: trace/breakpoint trap)
    

    It seems the final binary does not contain LC_RPATH:

    $ otool -l target/debug/examples/hello_world | grep LC_RPATH
    $ otool -l target/debug/examples/hello_world
    target/debug/examples/hello_world:
    Load command 0
          cmd LC_SEGMENT_64
      cmdsize 72
      segname __PAGEZERO
       vmaddr 0x0000000000000000
       vmsize 0x0000000100000000
      fileoff 0
     filesize 0
      maxprot 0x00000000
     initprot 0x00000000
       nsects 0
        flags 0x0
    Load command 1
          cmd LC_SEGMENT_64
      cmdsize 712
      segname __TEXT
       vmaddr 0x0000000100000000
       vmsize 0x0000000000042000
      fileoff 0
     filesize 270336
      maxprot 0x00000007
     initprot 0x00000005
       nsects 8
        flags 0x0
    Section
      sectname __text
       segname __TEXT
          addr 0x0000000100000f90
          size 0x0000000000036290
        offset 3984
         align 2^4 (16)
        reloff 0
        nreloc 0
         flags 0x80000400
     reserved1 0
     reserved2 0
    Section
      sectname __stubs
       segname __TEXT
          addr 0x0000000100037220
          size 0x0000000000000270
        offset 225824
         align 2^1 (2)
        reloff 0
        nreloc 0
         flags 0x80000408
     reserved1 0 (index into indirect symbol table)
     reserved2 6 (size of stubs)
    Section
      sectname __stub_helper
       segname __TEXT
          addr 0x0000000100037490
          size 0x000000000000040c
        offset 226448
         align 2^2 (4)
        reloff 0
        nreloc 0
         flags 0x80000400
     reserved1 0
     reserved2 0
    Section
      sectname __gcc_except_tab
       segname __TEXT
          addr 0x000000010003789c
          size 0x00000000000011a0
        offset 227484
         align 2^2 (4)
        reloff 0
        nreloc 0
         flags 0x00000000
     reserved1 0
     reserved2 0
    Section
      sectname __const
       segname __TEXT
          addr 0x0000000100038a40
          size 0x0000000000002b48
        offset 232000
         align 2^6 (64)
        reloff 0
        nreloc 0
         flags 0x00000000
     reserved1 0
     reserved2 0
    Section
      sectname __cstring
       segname __TEXT
          addr 0x000000010003b588
          size 0x00000000000019d3
        offset 243080
         align 2^0 (1)
        reloff 0
        nreloc 0
         flags 0x00000002
     reserved1 0
     reserved2 0
    Section
      sectname __unwind_info
       segname __TEXT
          addr 0x000000010003cf5c
          size 0x00000000000014b8
        offset 249692
         align 2^2 (4)
        reloff 0
        nreloc 0
         flags 0x00000000
     reserved1 0
     reserved2 0
    Section
      sectname __eh_frame
       segname __TEXT
          addr 0x000000010003e418
          size 0x0000000000003bd0
        offset 255000
         align 2^3 (8)
        reloff 0
        nreloc 0
         flags 0x00000000
     reserved1 0
     reserved2 0
    Load command 2
          cmd LC_SEGMENT_64
      cmdsize 872
      segname __DATA
       vmaddr 0x0000000100042000
       vmsize 0x0000000000005000
      fileoff 270336
     filesize 16384
      maxprot 0x00000007
     initprot 0x00000003
       nsects 10
        flags 0x0
    Section
      sectname __nl_symbol_ptr
       segname __DATA
          addr 0x0000000100042000
          size 0x0000000000000010
        offset 270336
         align 2^3 (8)
        reloff 0
        nreloc 0
         flags 0x00000006
     reserved1 104 (index into indirect symbol table)
     reserved2 0
    Section
      sectname __got
       segname __DATA
          addr 0x0000000100042010
          size 0x0000000000000070
        offset 270352
         align 2^3 (8)
        reloff 0
        nreloc 0
         flags 0x00000006
     reserved1 106 (index into indirect symbol table)
     reserved2 0
    Section
      sectname __la_symbol_ptr
       segname __DATA
          addr 0x0000000100042080
          size 0x0000000000000340
        offset 270464
         align 2^3 (8)
        reloff 0
        nreloc 0
         flags 0x00000007
     reserved1 120 (index into indirect symbol table)
     reserved2 0
    Section
      sectname __mod_init_func
       segname __DATA
          addr 0x00000001000423c0
          size 0x0000000000000010
        offset 271296
         align 2^3 (8)
        reloff 0
        nreloc 0
         flags 0x00000009
     reserved1 0
     reserved2 0
    Section
      sectname __const
       segname __DATA
          addr 0x00000001000423d0
          size 0x0000000000002eb8
        offset 271312
         align 2^4 (16)
        reloff 0
        nreloc 0
         flags 0x00000000
     reserved1 0
     reserved2 0
    Section
      sectname __thread_vars
       segname __DATA
          addr 0x0000000100045288
          size 0x0000000000000060
        offset 283272
         align 2^0 (1)
        reloff 0
        nreloc 0
         flags 0x00000013
     reserved1 0
     reserved2 0
    Section
      sectname __data
       segname __DATA
          addr 0x00000001000452f0
          size 0x0000000000000428
        offset 283376
         align 2^4 (16)
        reloff 0
        nreloc 0
         flags 0x00000000
     reserved1 0
     reserved2 0
    Section
      sectname __thread_data
       segname __DATA
          addr 0x0000000100045718
          size 0x0000000000000098
        offset 284440
         align 2^3 (8)
        reloff 0
        nreloc 0
         flags 0x00000011
     reserved1 0
     reserved2 0
    Section
      sectname __common
       segname __DATA
          addr 0x00000001000457b0
          size 0x0000000000000a30
        offset 0
         align 2^4 (16)
        reloff 0
        nreloc 0
         flags 0x00000001
     reserved1 0
     reserved2 0
    Section
      sectname __bss
       segname __DATA
          addr 0x00000001000461e0
          size 0x0000000000000130
        offset 0
         align 2^4 (16)
        reloff 0
        nreloc 0
         flags 0x00000001
     reserved1 0
     reserved2 0
    Load command 3
          cmd LC_SEGMENT_64
      cmdsize 72
      segname __LINKEDIT
       vmaddr 0x0000000100047000
       vmsize 0x0000000000028000
      fileoff 286720
     filesize 160416
      maxprot 0x00000007
     initprot 0x00000001
       nsects 0
        flags 0x0
    Load command 4
                cmd LC_DYLD_INFO_ONLY
            cmdsize 48
         rebase_off 286720
        rebase_size 904
           bind_off 287624
          bind_size 1064
      weak_bind_off 288688
     weak_bind_size 264
      lazy_bind_off 288952
     lazy_bind_size 2928
         export_off 291880
        export_size 11664
    Load command 5
         cmd LC_SYMTAB
     cmdsize 24
      symoff 304616
       nsyms 3773
      stroff 365880
     strsize 81256
    Load command 6
                cmd LC_DYSYMTAB
            cmdsize 80
          ilocalsym 0
          nlocalsym 3313
         iextdefsym 3313
         nextdefsym 332
          iundefsym 3645
          nundefsym 128
             tocoff 0
               ntoc 0
          modtaboff 0
            nmodtab 0
       extrefsymoff 0
        nextrefsyms 0
     indirectsymoff 364984
      nindirectsyms 224
          extreloff 0
            nextrel 0
          locreloff 0
            nlocrel 0
    Load command 7
              cmd LC_LOAD_DYLINKER
          cmdsize 32
             name /usr/lib/dyld (offset 12)
    Load command 8
         cmd LC_UUID
     cmdsize 24
        uuid F518EE43-2023-3094-85CB-9528895A1527
    Load command 9
          cmd LC_VERSION_MIN_MACOSX
      cmdsize 16
      version 10.11
          sdk 10.11
    Load command 10
          cmd LC_SOURCE_VERSION
      cmdsize 16
      version 0.0
    Load command 11
           cmd LC_MAIN
       cmdsize 24
      entryoff 22512
     stacksize 0
    Load command 12
              cmd LC_LOAD_DYLIB
          cmdsize 72
             name @rpath/QtCore.framework/Versions/5/QtCore (offset 24)
       time stamp 2 Wed Dec 31 19:00:02 1969
          current version 5.7.0
    compatibility version 5.7.0
    Load command 13
              cmd LC_LOAD_DYLIB
          cmdsize 72
             name @rpath/QtNetwork.framework/Versions/5/QtNetwork (offset 24)
       time stamp 2 Wed Dec 31 19:00:02 1969
          current version 5.7.0
    compatibility version 5.7.0
    Load command 14
              cmd LC_LOAD_DYLIB
          cmdsize 64
             name @rpath/QtGui.framework/Versions/5/QtGui (offset 24)
       time stamp 2 Wed Dec 31 19:00:02 1969
          current version 5.7.0
    compatibility version 5.7.0
    Load command 15
              cmd LC_LOAD_DYLIB
          cmdsize 64
             name @rpath/QtQml.framework/Versions/5/QtQml (offset 24)
       time stamp 2 Wed Dec 31 19:00:02 1969
          current version 5.7.0
    compatibility version 5.7.0
    Load command 16
              cmd LC_LOAD_DYLIB
          cmdsize 72
             name @rpath/QtWidgets.framework/Versions/5/QtWidgets (offset 24)
       time stamp 2 Wed Dec 31 19:00:02 1969
          current version 5.7.0
    compatibility version 5.7.0
    Load command 17
              cmd LC_LOAD_DYLIB
          cmdsize 48
             name /usr/lib/libc++.1.dylib (offset 24)
       time stamp 2 Wed Dec 31 19:00:02 1969
          current version 120.1.0
    compatibility version 1.0.0
    Load command 18
              cmd LC_LOAD_DYLIB
          cmdsize 56
             name /usr/lib/libSystem.B.dylib (offset 24)
       time stamp 2 Wed Dec 31 19:00:02 1969
          current version 1226.10.1
    compatibility version 1.0.0
    Load command 19
          cmd LC_FUNCTION_STARTS
      cmdsize 16
      dataoff 303544
     datasize 1072
    Load command 20
          cmd LC_DATA_IN_CODE
      cmdsize 16
      dataoff 304616
     datasize 0
    

    A workaround is to replace the @rpath in the binary with absolute paths. For example:

    install_name_tool -change @rpath/QtCore.framework/Versions/5/QtCore ${QT_DIR}/lib/QtCore.framework/Versions/5/QtCore target/debug/examples/hello_world
    

    The script libqmlbind-sys/fix_qt_rpath.sh will perform the required change.

    OSX libqmlbind-sys 
    opened by nbigaouette 3
  • Investigate the many warnings that the bindgen generated file produce

    Investigate the many warnings that the bindgen generated file produce

    Those warnings are:

    src/lib.rs:380:9: 380:33 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:380      -> *mut qmlbind_application;
                           ^~~~~~~~~~~~~~~~~~~~~~~~
    src/lib.rs:381:46: 381:70 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:381     pub fn qmlbind_application_instance() -> *mut qmlbind_application;
                                                                ^~~~~~~~~~~~~~~~~~~~~~~~
    src/lib.rs:382:47: 382:71 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:382     pub fn qmlbind_application_release(self_: *mut qmlbind_application);
                                                                 ^~~~~~~~~~~~~~~~~~~~~~~~
    src/lib.rs:383:44: 383:68 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:383     pub fn qmlbind_application_exec(self_: *mut qmlbind_application)
                                                              ^~~~~~~~~~~~~~~~~~~~~~~~
    src/lib.rs:391:42: 391:61 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:391     pub fn qmlbind_component_new(engine: *mut qmlbind_engine)
                                                            ^~~~~~~~~~~~~~~~~~~
    src/lib.rs:392:9: 392:31 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:392      -> *mut qmlbind_component;
                           ^~~~~~~~~~~~~~~~~~~~~~
    src/lib.rs:393:45: 393:67 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:393     pub fn qmlbind_component_release(self_: *mut qmlbind_component);
                                                               ^~~~~~~~~~~~~~~~~~~~~~
    src/lib.rs:394:47: 394:69 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:394     pub fn qmlbind_component_load_path(self_: *mut qmlbind_component,
                                                                 ^~~~~~~~~~~~~~~~~~~~~~
    src/lib.rs:396:46: 396:68 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:396     pub fn qmlbind_component_load_url(self_: *mut qmlbind_component,
                                                                ^~~~~~~~~~~~~~~~~~~~~~
    src/lib.rs:398:46: 398:68 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:398     pub fn qmlbind_component_set_data(self_: *mut qmlbind_component,
                                                                ^~~~~~~~~~~~~~~~~~~~~~
    src/lib.rs:401:54: 401:76 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:401     pub fn qmlbind_component_get_error_string(self_: *mut qmlbind_component)
                                                                        ^~~~~~~~~~~~~~~~~~~~~~
    src/lib.rs:402:9: 402:28 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:402      -> *mut qmlbind_string;
                           ^~~~~~~~~~~~~~~~~~~
    src/lib.rs:403:44: 403:66 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:403     pub fn qmlbind_component_create(self_: *mut qmlbind_component)
                                                              ^~~~~~~~~~~~~~~~~~~~~~
    src/lib.rs:404:9: 404:27 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:404      -> *mut qmlbind_value;
                           ^~~~~~~~~~~~~~~~~~
    src/lib.rs:405:36: 405:55 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:405     pub fn qmlbind_engine_new() -> *mut qmlbind_engine;
                                                      ^~~~~~~~~~~~~~~~~~~
    src/lib.rs:406:42: 406:61 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:406     pub fn qmlbind_engine_release(self_: *mut qmlbind_engine);
                                                            ^~~~~~~~~~~~~~~~~~~
    src/lib.rs:407:39: 407:58 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:407     pub fn qmlbind_engine_eval(self_: *mut qmlbind_engine,
                                                         ^~~~~~~~~~~~~~~~~~~
    src/lib.rs:411:9: 411:27 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:411      -> *mut qmlbind_value;
                           ^~~~~~~~~~~~~~~~~~
    src/lib.rs:412:52: 412:73 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:412     pub fn qmlbind_engine_get_global_object(self_: *const qmlbind_engine)
                                                                      ^~~~~~~~~~~~~~~~~~~~~
    src/lib.rs:413:9: 413:27 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:413      -> *mut qmlbind_value;
                           ^~~~~~~~~~~~~~~~~~
    src/lib.rs:414:45: 414:64 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:414     pub fn qmlbind_engine_new_object(self_: *mut qmlbind_engine)
                                                               ^~~~~~~~~~~~~~~~~~~
    src/lib.rs:415:9: 415:27 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:415      -> *mut qmlbind_value;
                           ^~~~~~~~~~~~~~~~~~
    src/lib.rs:416:44: 416:63 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:416     pub fn qmlbind_engine_new_array(self_: *mut qmlbind_engine,
                                                              ^~~~~~~~~~~~~~~~~~~
    src/lib.rs:418:9: 418:27 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:418      -> *mut qmlbind_value;
                           ^~~~~~~~~~~~~~~~~~
    src/lib.rs:419:46: 419:65 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:419     pub fn qmlbind_engine_new_wrapper(self_: *mut qmlbind_engine,
                                                                ^~~~~~~~~~~~~~~~~~~
    src/lib.rs:420:50: 420:74 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:420                                       metaclass: *const qmlbind_metaclass,
                                                                    ^~~~~~~~~~~~~~~~~~~~~~~~
    src/lib.rs:421:47: 421:73 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:421                                       object: *mut qmlbind_client_object)
                                                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~
    src/lib.rs:422:9: 422:27 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:422      -> *mut qmlbind_value;
                           ^~~~~~~~~~~~~~~~~~
    src/lib.rs:423:50: 423:69 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:423     pub fn qmlbind_engine_add_import_path(self_: *mut qmlbind_engine,
                                                                    ^~~~~~~~~~~~~~~~~~~
    src/lib.rs:426:50: 426:69 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:426     pub fn qmlbind_engine_collect_garbage(self_: *mut qmlbind_engine);
                                                                    ^~~~~~~~~~~~~~~~~~~
    src/lib.rs:427:47: 427:72 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:427     pub fn qmlbind_metaclass_new(classObject: *mut qmlbind_client_class,
                                                                 ^~~~~~~~~~~~~~~~~~~~~~~~~
    src/lib.rs:429:45: 429:69 warning: found non-foreign-function-safe member in enum: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:429                                  callbacks: qmlbind_client_callbacks)
                                                               ^~~~~~~~~~~~~~~~~~~~~~~~
    src/lib.rs:430:9: 430:31 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:430      -> *mut qmlbind_metaclass;
                           ^~~~~~~~~~~~~~~~~~~~~~
    src/lib.rs:431:45: 431:67 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:431     pub fn qmlbind_metaclass_release(self_: *mut qmlbind_metaclass);
                                                               ^~~~~~~~~~~~~~~~~~~~~~
    src/lib.rs:432:48: 432:70 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:432     pub fn qmlbind_metaclass_add_method(self_: *mut qmlbind_metaclass,
                                                                  ^~~~~~~~~~~~~~~~~~~~~~
    src/lib.rs:435:48: 435:70 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:435     pub fn qmlbind_metaclass_add_signal(self_: *mut qmlbind_metaclass,
                                                                  ^~~~~~~~~~~~~~~~~~~~~~
    src/lib.rs:440:50: 440:72 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:440     pub fn qmlbind_metaclass_add_property(self_: *mut qmlbind_metaclass,
                                                                    ^~~~~~~~~~~~~~~~~~~~~~
    src/lib.rs:444:46: 444:70 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:444     pub fn qmlbind_metaclass_register(self_: *const qmlbind_metaclass,
                                                                ^~~~~~~~~~~~~~~~~~~~~~~~
    src/lib.rs:450:41: 450:61 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:450     pub fn qmlbind_iterator_new(object: *const qmlbind_value)
                                                           ^~~~~~~~~~~~~~~~~~~~
    src/lib.rs:451:9: 451:30 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:451      -> *mut qmlbind_iterator;
                           ^~~~~~~~~~~~~~~~~~~~~
    src/lib.rs:452:44: 452:65 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:452     pub fn qmlbind_iterator_release(self_: *mut qmlbind_iterator);
                                                              ^~~~~~~~~~~~~~~~~~~~~
    src/lib.rs:453:44: 453:67 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:453     pub fn qmlbind_iterator_get_key(self_: *const qmlbind_iterator)
                                                              ^~~~~~~~~~~~~~~~~~~~~~~
    src/lib.rs:454:9: 454:28 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:454      -> *mut qmlbind_string;
                           ^~~~~~~~~~~~~~~~~~~
    src/lib.rs:455:46: 455:69 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:455     pub fn qmlbind_iterator_get_value(self_: *const qmlbind_iterator)
                                                                ^~~~~~~~~~~~~~~~~~~~~~~
    src/lib.rs:456:9: 456:27 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:456      -> *mut qmlbind_value;
                           ^~~~~~~~~~~~~~~~~~
    src/lib.rs:457:41: 457:62 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:457     pub fn qmlbind_iterator_next(self_: *mut qmlbind_iterator);
                                                           ^~~~~~~~~~~~~~~~~~~~~
    src/lib.rs:458:45: 458:68 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:458     pub fn qmlbind_iterator_has_next(self_: *const qmlbind_iterator)
                                                               ^~~~~~~~~~~~~~~~~~~~~~~
    src/lib.rs:461:9: 461:28 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:461      -> *mut qmlbind_plugin;
                           ^~~~~~~~~~~~~~~~~~~
    src/lib.rs:462:42: 462:61 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:462     pub fn qmlbind_plugin_release(self_: *mut qmlbind_plugin);
                                                            ^~~~~~~~~~~~~~~~~~~
    src/lib.rs:463:51: 463:70 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:463     pub fn qmlbind_plugin_get_error_string(self_: *mut qmlbind_plugin)
                                                                     ^~~~~~~~~~~~~~~~~~~
    src/lib.rs:464:9: 464:28 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:464      -> *mut qmlbind_string;
                           ^~~~~~~~~~~~~~~~~~~
    src/lib.rs:465:47: 465:66 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:465     pub fn qmlbind_plugin_get_instance(self_: *mut qmlbind_plugin,
                                                                 ^~~~~~~~~~~~~~~~~~~
    src/lib.rs:466:48: 466:67 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:466                                        engine: *mut qmlbind_engine)
                                                                  ^~~~~~~~~~~~~~~~~~~
    src/lib.rs:467:9: 467:27 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:467      -> *mut qmlbind_value;
                           ^~~~~~~~~~~~~~~~~~
    src/lib.rs:468:48: 468:68 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:468     pub fn qmlbind_signal_emitter_new(wrapper: *const qmlbind_value)
                                                                  ^~~~~~~~~~~~~~~~~~~~
    src/lib.rs:469:9: 469:36 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:469      -> *mut qmlbind_signal_emitter;
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~
    src/lib.rs:470:47: 470:74 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:470     pub fn qmlbind_signal_emitter_emit(self_: *mut qmlbind_signal_emitter,
                                                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~
    src/lib.rs:474:46: 474:73 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:474                                        argv: *const *const qmlbind_value);
                                                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~
    src/lib.rs:476:50: 476:79 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:476                                                  *const qmlbind_signal_emitter)
                                                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    src/lib.rs:477:9: 477:28 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:477      -> *mut qmlbind_engine;
                           ^~~~~~~~~~~~~~~~~~~
    src/lib.rs:478:50: 478:77 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:478     pub fn qmlbind_signal_emitter_release(self_: *mut qmlbind_signal_emitter);
                                                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~
    src/lib.rs:479:44: 479:65 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:479     pub fn qmlbind_string_get_chars(self_: *const qmlbind_string)
                                                              ^~~~~~~~~~~~~~~~~~~~~
    src/lib.rs:481:45: 481:66 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:481     pub fn qmlbind_string_get_length(self_: *const qmlbind_string)
                                                               ^~~~~~~~~~~~~~~~~~~~~
    src/lib.rs:483:42: 483:61 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:483     pub fn qmlbind_string_release(self_: *mut qmlbind_string);
                                                            ^~~~~~~~~~~~~~~~~~~
    src/lib.rs:513:45: 513:63 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:513     pub fn qmlbind_value_new_undefined() -> *mut qmlbind_value;
                                                               ^~~~~~~~~~~~~~~~~~
    src/lib.rs:514:40: 514:58 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:514     pub fn qmlbind_value_new_null() -> *mut qmlbind_value;
                                                          ^~~~~~~~~~~~~~~~~~
    src/lib.rs:515:41: 515:59 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:515     pub fn qmlbind_value_release(self_: *mut qmlbind_value);
                                                           ^~~~~~~~~~~~~~~~~~
    src/lib.rs:516:39: 516:59 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:516     pub fn qmlbind_value_clone(other: *const qmlbind_value)
                                                         ^~~~~~~~~~~~~~~~~~~~
    src/lib.rs:517:9: 517:27 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:517      -> *mut qmlbind_value;
                           ^~~~~~~~~~~~~~~~~~
    src/lib.rs:518:43: 518:63 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:518     pub fn qmlbind_value_is_equal(value1: *const qmlbind_value,
                                                             ^~~~~~~~~~~~~~~~~~~~
    src/lib.rs:519:43: 519:63 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:519                                   value2: *const qmlbind_value)
                                                             ^~~~~~~~~~~~~~~~~~~~
    src/lib.rs:521:47: 521:67 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:521     pub fn qmlbind_value_is_identical(value1: *const qmlbind_value,
                                                                 ^~~~~~~~~~~~~~~~~~~~
    src/lib.rs:522:47: 522:67 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:522                                       value2: *const qmlbind_value)
                                                                 ^~~~~~~~~~~~~~~~~~~~
    src/lib.rs:524:46: 524:66 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:524     pub fn qmlbind_value_is_undefined(self_: *const qmlbind_value)
                                                                ^~~~~~~~~~~~~~~~~~~~
    src/lib.rs:526:41: 526:61 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:526     pub fn qmlbind_value_is_null(self_: *const qmlbind_value)
                                                           ^~~~~~~~~~~~~~~~~~~~
    src/lib.rs:528:44: 528:64 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:528     pub fn qmlbind_value_is_boolean(self_: *const qmlbind_value)
                                                              ^~~~~~~~~~~~~~~~~~~~
    src/lib.rs:530:43: 530:63 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:530     pub fn qmlbind_value_is_number(self_: *const qmlbind_value)
                                                             ^~~~~~~~~~~~~~~~~~~~
    src/lib.rs:532:43: 532:63 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:532     pub fn qmlbind_value_is_string(self_: *const qmlbind_value)
                                                             ^~~~~~~~~~~~~~~~~~~~
    src/lib.rs:534:43: 534:63 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:534     pub fn qmlbind_value_is_object(self_: *const qmlbind_value)
                                                             ^~~~~~~~~~~~~~~~~~~~
    src/lib.rs:536:42: 536:62 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:536     pub fn qmlbind_value_is_array(self_: *const qmlbind_value)
                                                            ^~~~~~~~~~~~~~~~~~~~
    src/lib.rs:538:45: 538:65 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:538     pub fn qmlbind_value_is_function(self_: *const qmlbind_value)
                                                               ^~~~~~~~~~~~~~~~~~~~
    src/lib.rs:540:42: 540:62 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:540     pub fn qmlbind_value_is_error(self_: *const qmlbind_value)
                                                            ^~~~~~~~~~~~~~~~~~~~
    src/lib.rs:542:44: 542:64 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:542     pub fn qmlbind_value_is_wrapper(self_: *const qmlbind_value)
                                                              ^~~~~~~~~~~~~~~~~~~~
    src/lib.rs:545:9: 545:27 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:545      -> *mut qmlbind_value;
                           ^~~~~~~~~~~~~~~~~~
    src/lib.rs:546:45: 546:65 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:546     pub fn qmlbind_value_get_boolean(self_: *const qmlbind_value)
                                                               ^~~~~~~~~~~~~~~~~~~~
    src/lib.rs:549:9: 549:27 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:549      -> *mut qmlbind_value;
                           ^~~~~~~~~~~~~~~~~~
    src/lib.rs:550:44: 550:64 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:550     pub fn qmlbind_value_get_number(self_: *const qmlbind_value)
                                                              ^~~~~~~~~~~~~~~~~~~~
    src/lib.rs:554:9: 554:27 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:554      -> *mut qmlbind_value;
                           ^~~~~~~~~~~~~~~~~~
    src/lib.rs:556:9: 556:27 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:556      -> *mut qmlbind_value;
                           ^~~~~~~~~~~~~~~~~~
    src/lib.rs:557:44: 557:64 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:557     pub fn qmlbind_value_get_string(self_: *const qmlbind_value)
                                                              ^~~~~~~~~~~~~~~~~~~~
    src/lib.rs:558:9: 558:28 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:558      -> *mut qmlbind_string;
                           ^~~~~~~~~~~~~~~~~~~
    src/lib.rs:559:46: 559:66 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:559     pub fn qmlbind_value_get_property(self_: *const qmlbind_value,
                                                                ^~~~~~~~~~~~~~~~~~~~
    src/lib.rs:561:9: 561:27 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:561      -> *mut qmlbind_value;
                           ^~~~~~~~~~~~~~~~~~
    src/lib.rs:562:46: 562:64 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:562     pub fn qmlbind_value_set_property(self_: *mut qmlbind_value,
                                                                ^~~~~~~~~~~~~~~~~~
    src/lib.rs:564:46: 564:66 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:564                                       value: *const qmlbind_value);
                                                                ^~~~~~~~~~~~~~~~~~~~
    src/lib.rs:565:49: 565:67 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:565     pub fn qmlbind_value_delete_property(self_: *mut qmlbind_value,
                                                                   ^~~~~~~~~~~~~~~~~~
    src/lib.rs:568:46: 568:66 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:568     pub fn qmlbind_value_has_property(self_: *const qmlbind_value,
                                                                ^~~~~~~~~~~~~~~~~~~~
    src/lib.rs:571:50: 571:70 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:571     pub fn qmlbind_value_has_own_property(self_: *const qmlbind_value,
                                                                    ^~~~~~~~~~~~~~~~~~~~
    src/lib.rs:574:47: 574:67 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:574     pub fn qmlbind_value_get_prototype(self_: *const qmlbind_value)
                                                                 ^~~~~~~~~~~~~~~~~~~~
    src/lib.rs:575:9: 575:27 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:575      -> *mut qmlbind_value;
                           ^~~~~~~~~~~~~~~~~~
    src/lib.rs:576:47: 576:65 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:576     pub fn qmlbind_value_set_prototype(self_: *mut qmlbind_value,
                                                                 ^~~~~~~~~~~~~~~~~~
    src/lib.rs:577:47: 577:67 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:577                                        proto: *const qmlbind_value);
                                                                 ^~~~~~~~~~~~~~~~~~~~
    src/lib.rs:578:43: 578:63 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:578     pub fn qmlbind_value_has_index(self_: *const qmlbind_value,
                                                             ^~~~~~~~~~~~~~~~~~~~
    src/lib.rs:581:48: 581:68 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:581     pub fn qmlbind_value_get_array_item(self_: *const qmlbind_value,
                                                                  ^~~~~~~~~~~~~~~~~~~~
    src/lib.rs:583:9: 583:27 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:583      -> *mut qmlbind_value;
                           ^~~~~~~~~~~~~~~~~~
    src/lib.rs:584:48: 584:66 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:584     pub fn qmlbind_value_set_array_item(self_: *mut qmlbind_value,
                                                                  ^~~~~~~~~~~~~~~~~~
    src/lib.rs:586:51: 586:71 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:586                                         property: *const qmlbind_value);
                                                                     ^~~~~~~~~~~~~~~~~~~~
    src/lib.rs:587:38: 587:56 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:587     pub fn qmlbind_value_call(self_: *mut qmlbind_value,
                                                        ^~~~~~~~~~~~~~~~~~
    src/lib.rs:589:37: 589:64 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:589                               argv: *const *const qmlbind_value)
                                                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~
    src/lib.rs:590:9: 590:27 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:590      -> *mut qmlbind_value;
                           ^~~~~~~~~~~~~~~~~~
    src/lib.rs:591:53: 591:71 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:591     pub fn qmlbind_value_call_constructor(function: *mut qmlbind_value,
                                                                       ^~~~~~~~~~~~~~~~~~
    src/lib.rs:593:49: 593:76 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:593                                           argv: *const *const qmlbind_value)
                                                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
    src/lib.rs:594:9: 594:27 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:594      -> *mut qmlbind_value;
                           ^~~~~~~~~~~~~~~~~~
    src/lib.rs:595:52: 595:70 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:595     pub fn qmlbind_value_call_with_instance(self_: *mut qmlbind_value,
                                                                      ^~~~~~~~~~~~~~~~~~
    src/lib.rs:596:55: 596:73 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:596                                             instance: *mut qmlbind_value,
                                                                         ^~~~~~~~~~~~~~~~~~
    src/lib.rs:598:51: 598:78 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:598                                             argv: *const *const qmlbind_value)
                                                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~
    src/lib.rs:599:9: 599:27 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:599      -> *mut qmlbind_value;
                           ^~~~~~~~~~~~~~~~~~
    src/lib.rs:600:40: 600:60 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:600     pub fn qmlbind_value_unwrap(self_: *const qmlbind_value)
                                                          ^~~~~~~~~~~~~~~~~~~~
    src/lib.rs:601:9: 601:35 warning: found zero-size struct in foreign module, consider adding a member to this struct, #[warn(improper_ctypes)] on by default
    src/lib.rs:601      -> *mut qmlbind_client_object;
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~
    
    libqmlbind-sys 
    opened by nbigaouette 1
Owner
Nicolas Bigaouette
Nicolas Bigaouette
🕹 A quick'n'dirty game sample using kajiya, physx-rs, and dolly

??️ Cornell McRay t'Racing A quick'n'dirty game sample using kajiya, physx-rs, and dolly. System requirements See the kajiya readme. Building Clone th

Tomasz Stachowiak 647 Dec 31, 2022
Quick example of displaying a BMP file with uefi-rs

uefi-bmp Quick example of drawing a bitmap using uefi-rs and tinybmp. Not necessarily the most efficient :) Build and run (may need some modification

Nicholas Bishop 1 Jan 16, 2022
Naive and quick Wordle optimal starting word Analysis.

wordlentropy Naive and quick Wordle optimal starting word Analysis. This Rust code can analyze all 2315 Wordle games with 10657 word choices in 100 mi

Mufeed VH 2 Feb 7, 2022
A Rust wrapper and bindings of Allegro 5 game programming library

RustAllegro A thin Rust wrapper of Allegro 5. Game loop example extern crate allegro; extern crate allegro_font; use allegro::*; use allegro_font::*;

null 80 Dec 31, 2022
Rust bindings for GDNative

GDNative bindings for Rust Rust bindings to the Godot game engine. Website | User Guide | API Documentation Stability The bindings cover most of the e

null 3.2k Jan 9, 2023
SDL bindings for Rust

Rust-SDL Bindings for SDL in Rust Overview Rust-SDL is a library for talking to SDL from Rust. Low-level C components are wrapped in Rust code to make

Brian Anderson 174 Nov 22, 2022
SDL2 bindings for Rust

Rust-SDL2 Bindings for SDL2 in Rust Changelog for 0.34.2 Overview Rust-SDL2 is a library for talking to the new SDL2.0 libraries from Rust. Low-level

null 2.2k Jan 5, 2023
SFML bindings for Rust

rust-sfml Rust bindings for SFML, the Simple and Fast Multimedia Library. Requirements Linux, Windows, or OS X Rust 1.42 or later SFML 2.5 CSFML 2.5 D

Jeremy Letang 567 Jan 7, 2023
Rust bindings for libtcod 1.6.3 (the Doryen library/roguelike toolkit)

Warning: Not Maintained This project is no longer actively developed or maintained. Please accept our apologies. Open pull requests may still get merg

Tomas Sedovic 226 Nov 17, 2022
Some Rust bindings for Binary Ninja

Binary Ninja Rust Bindings Work in progress Rust bindings geared towards analysis. Features added as they come up. No promises anything works at this

Cory Duplantis 21 May 5, 2022