[PD] compiling hidio for Windows

Christof Ressi info at christofressi.com
Mon Feb 3 13:10:28 CET 2020


Sorry for the "-hdi" typo... As I said, I don't think anyone ever 
compiled and tested this on Windows, so I'm not surprised the binary 
fails for you. If you like to investigate it further, please go ahead! I 
might take a look myself in the future, but I'm terribly busy at the moment.

Christof

On 02.02.2020 19:44, ffdd cchh wrote:
> Ok, I did Christof's step c) and copied those dummy functions (and 
> basically commented out anything but a debug_post() inside 
> "hidio_devices()" and "hidio_elements()", and indeed got a binary. 
> But, it's no use.
>
> I try to get some data on why it crashes but it just says 
> 'segmentation fault':
>
> ```
> camarahalac.1 at ACD-NC054624 MINGW64 ~/Desktop
> $ /c/Users/camarahalac.1/Downloads/pd-0.50-2/bin/pd.exe -d 4 -stderr 
> -open /c/Users/camarahalac.1/Downloads/pd-0.50-2/extra/hidio/hidio-help.pd
> Segmentation fault
> ```
>
>
>
>
>
> On Sun, Feb 2, 2020 at 12:38 PM ffdd cchh <camarafede at gmail.com 
> <mailto:camarafede at gmail.com>> wrote:
>
>     You are right! I now have undefined references only on hidio.o:
>
>     hidio.o: In function `hidio_write_event':
>     Z:\Desktop\hidio/hidio.c:357: undefined reference to
>     `hidio_write_event_symbols'
>     Z:\Desktop\hidio/hidio.c:336: undefined reference to
>     `hidio_write_event_ints'
>     Z:\Desktop\hidio/hidio.c:347: undefined reference to
>     `hidio_write_event_symbol_int'
>     hidio.o: In function `hidio_setup':
>     Z:\Desktop\hidio/hidio.c:643: undefined reference to `hidio_devices'
>     Z:\Desktop\hidio/hidio.c:644: undefined reference to `hidio_elements'
>     hidio.o:hidio.c:(.rdata$.refptr.hidio_elements[.refptr.hidio_elements]+0x0):
>     undefined reference to `hidio_elements'
>     hidio.o:hidio.c:(.rdata$.refptr.hidio_devices[.refptr.hidio_devices]+0x0):
>     undefined reference to `hidio_devices'
>     collect2.exe: error: ld returned 1 exit status
>     make[1]: *** [Makefile:267: hidio.dll] Error 1
>     make[1]: Leaving directory '/z/Desktop/hidio'
>     make: *** [Makefile:303: all-recursive] Error 1
>
>
>
>
>     On Sun, Feb 2, 2020 at 12:17 PM Martin Peach
>     <chakekatzil at gmail.com <mailto:chakekatzil at gmail.com>> wrote:
>     >
>     > I'm not sure but I think -lhdi should be -lhid, since it's a
>     human interface device library.
>     > See
>     https://docs.microsoft.com/en-us/windows-hardware/drivers/hid/introduction-to-hid-concepts
>     >
>     > Martin
>     >
>     > On Sun, Feb 2, 2020 at 12:04 PM ffdd cchh <camarafede at gmail.com
>     <mailto:camarafede at gmail.com>> wrote:
>     >>
>     >> Hi Martin, Christof,
>     >>
>     >> thanks both. Still no luck.
>     >>
>     >> I managed through steps a) b) and d), with the exception that I
>     could not add "-lhdi", as it appears to not be installed here. Is
>     that pointing to this:
>     https://cran.r-project.org/web/packages/hdi/index.html ?
>     >>
>     >> The log now points to *many* undefined references on mostly
>     hidio_windows.c and on hidio.c (which I suspect is my missing step
>     c), for which I did not have time)
>     >>
>     >> I attach the log here again.
>     >>
>     >> I have hit a brick wall here so I will not pursue this further
>     unless there are other instructions I can follow.
>     >>
>     >> Thanks for you help,
>     >>
>     >> Best,
>     >>
>     >> fd
>     >>
>     >> On Fri, Jan 31, 2020 at 10:52 PM Christof Ressi
>     <info at christofressi.com <mailto:info at christofressi.com>> wrote:
>     >>>
>     >>> The order of .o files doesn't matter. It's shared and static
>     libraries which sometimes have to be specified in a certain order.
>     >>>
>     >>> The actual problem was that
>     >>>
>     >>> a) hidio_windows.c used _WINDOWS instead of _WIN32 as a guard
>     around the whole code, so hidio_windows.o was empty.
>     >>>
>     >>> b) then there was a wrong header (<ddk/hidsdi.h>  instead of
>     <hidsdi.h>)
>     >>>
>     >>> c) some methods are not implemented, so I copied the dummy
>     implementation from hidio_linux.c. It seems like those methods are
>     only relevant for OSX.
>     >>>
>     >>> d) there were missing linker flags "-lhdi -lSetupAPI".
>     >>>
>     >>> Also, I couldn't get the autotools makefile to work, so I just
>     compiled manually on the command line. Finally I got a binary :-)
>     >>>
>     >>> To be honest, I don't think that anyone ever compiled this
>     code on Windows, so it is probably untested. Anyway, when I have
>     time I can clean this up and make a PR (or just fork it). Then we
>     probably need some testing before we upload it to Deken...
>     >>>
>     >>> Christof
>     >>>
>     >>> On 01.02.2020 02:50, Martin Peach wrote:
>     >>>
>     >>> Line 76 of the log:
>     >>> gcc  -DPD -g -O2 -I/z/Desktop/pure-data/src  -mms-bitfields 
>     -L/z/Desktop/pure-data/src -L/z/Desktop/pure-data/bin
>     -L/z/Desktop/pure-data/obj   -s -shared -o hidio.dll hidio.o
>     hidio_types.o   hidio_windows.o -L/src -L/bin -L/obj -lpd
>     >>> hidio.o: In function `hidio_tick':
>     >>> Z:\Desktop\hidio/hidio.c:513: undefined reference to
>     `hidio_get_events'
>     >>>
>     >>> hidio_tick is in hidio.o, which has compiled successfully.
>     >>> hidio_get_events is in hidio_windows.o, which also exists; but
>     the linker is linking three .o files, and hidio_windows.o is the
>     last one.
>     >>> Perhaps switching hidio.o and hidio_windows.o in that gcc
>     command will let the linker find the symbols before they are needed.
>     >>>
>     >>> Martin
>     >>>
>     >>>
>     >>>
>     >>> On Fri, Jan 31, 2020 at 5:29 PM ffdd cchh
>     <camarafede at gmail.com <mailto:camarafede at gmail.com>> wrote:
>     >>>>
>     >>>> Hi Christof,
>     >>>>
>     >>>> Thanks! Yes, I found these threads on the list:
>     >>>>
>     >>>> https://lists.puredata.info/pipermail/pd-list/2019-11/126348.html
>     >>>> https://lists.puredata.info/pipermail/pd-list/2019-10/126096.html
>     >>>>
>     >>>> But, there are still no Windows version of this external...
>     >>>>
>     >>>> Github issue is up: https://github.com/Benitoite/hidio/issues/2
>     >>>>
>     >>>> Hope something comes out of this thread! I am sure there are
>     enough Windows users out there in need of some hid external.
>     >>>>
>     >>>> Best,
>     >>>>
>     >>>> f
>     >>>>
>     >>>>
>     >>>> On Fri, Jan 31, 2020 at 4:57 PM Christof Ressi
>     <info at christofressi.com <mailto:info at christofressi.com>> wrote:
>     >>>>>
>     >>>>> I remember a similar thread on the list a few months ago. I
>     tried to compile it and gave up. The build system for Windows
>     seems to be broken and needs to be fixed (and probably switched
>     from automake to pd-lib-builder). Unfortunately, I don't have time
>     right now to work on this, but you could file a bug report on the
>     GitHub repo, so maybe the maintainer will do it.
>     >>>>>
>     >>>>> Christof
>     >>>>>
>     >>>>> On 31.01.2020 21:05, ffdd cchh wrote:
>     >>>>>
>     >>>>> Dear list,
>     >>>>>
>     >>>>> I need to use external controllers via USB with vanilla
>     (say, a PS4 controller), and I have not found a compiled version
>     of [hidio] for Windows. Please, let me know if there are
>     ready-made options out there (feel free to change subject line if
>     that thread goes wild).
>     >>>>>
>     >>>>> In the meantime, I am trying to compile [hidio] for Windows.
>     I'm on Windows 10.0.18362, x64-based PC. I am using a MSYS
>     terminal with MINGw64. I took the latest code from Benitoite's
>     repository (https://github.com/Benitoite/hidio) and I am stuck
>     with "undefined reference"s all over. I attach here the console log.
>     >>>>>
>     >>>>> I would very much welcome any idea on how to approach this
>     so I can use vanilla with my students :)
>     >>>>>
>     >>>>> Best,
>     >>>>>
>     >>>>> f
>     >>>>>
>     >>>>>
>     >>>>> _______________________________________________
>     >>>>> Pd-list at lists.iem.at <mailto:Pd-list at lists.iem.at> mailing list
>     >>>>> UNSUBSCRIBE and account-management ->
>     https://lists.puredata.info/listinfo/pd-list
>     >>>>>
>     >>>>> _______________________________________________
>     >>>>> Pd-list at lists.iem.at <mailto:Pd-list at lists.iem.at> mailing list
>     >>>>> UNSUBSCRIBE and account-management ->
>     https://lists.puredata.info/listinfo/pd-list
>     >>>>
>     >>>>
>     >>>>
>     >>>> --
>     >>>> fdch.github.io <http://fdch.github.io>
>     >>>> _______________________________________________
>     >>>> Pd-list at lists.iem.at <mailto:Pd-list at lists.iem.at> mailing list
>     >>>> UNSUBSCRIBE and account-management ->
>     https://lists.puredata.info/listinfo/pd-list
>     >>>
>     >>>
>     >>> _______________________________________________
>     >>> Pd-list at lists.iem.at <mailto:Pd-list at lists.iem.at> mailing list
>     >>> UNSUBSCRIBE and account-management ->
>     https://lists.puredata.info/listinfo/pd-list
>     >>>
>     >>> _______________________________________________
>     >>> Pd-list at lists.iem.at <mailto:Pd-list at lists.iem.at> mailing list
>     >>> UNSUBSCRIBE and account-management ->
>     https://lists.puredata.info/listinfo/pd-list
>     >>
>     >>
>     >>
>     >> --
>     >> fdch.github.io <http://fdch.github.io>
>     >> _______________________________________________
>     >> Pd-list at lists.iem.at <mailto:Pd-list at lists.iem.at> mailing list
>     >> UNSUBSCRIBE and account-management ->
>     https://lists.puredata.info/listinfo/pd-list
>
>
>
>     -- 
>     fdch.github.io <http://fdch.github.io>
>
>
>
> -- 
> fdch.github.io <http://fdch.github.io>
>
> _______________________________________________
> Pd-list at lists.iem.at mailing list
> UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puredata.info/pipermail/pd-list/attachments/20200203/0e814ecc/attachment-0001.html>


More information about the Pd-list mailing list