DLL not installed for this architecture?

Everything related to the development of modules in jamovi

by Fhas » Wed Sep 26, 2018 12:23 pm

Hi!

I'm running into problems distributing my module as a side load to windows.

I'm building on MacOS, no problems distributing to other macs:

onMacOs.jpeg
Ok on mac!
onMacOs.jpeg (118.62 KiB) Viewed 2071 times


If I try to install the module on Windows via side load, installation completes successfully, but all analyses that depend on libraries listed as imports, fail with the message: DLL 'xyz' not installed for this architecture?

Capture.JPG
Built on MacOS, installed on Windows
Capture.JPG (122.7 KiB) Viewed 2071 times


Should I be using specific build options in R to include all architectures, or, should I build a separate module on windows?

Thanks!
Fhas
 
Posts: 27
Joined: Wed Sep 12, 2018 2:55 pm

by Fhas » Wed Sep 26, 2018 2:04 pm

Quick follow up:

Yes, if I build on windows it works fine on windows

Some notes:

  • Had to remove mac "invisible" files like '._xyz.a.yaml', the installer tried to compile them.
  • To make it work I had to remove the 'build' folder copied from the mac. With the mac build folder, the module installed just fine under windows, but it still gave the "DLL" error.
  • The Windows .jmo file is about 4 times larger than the mac: 12MB vs. 43MB!


Ok, my students can go do their assignments now :grinning:
builtonWin.PNG
Built on Win, now it works fine!
builtonWin.PNG (53.95 KiB) Viewed 2067 times


Still curious if I can produce a "one-OS-fits-all module" by tweaking the build process on the Mac, please let me know, thanks!
Fhas
 
Posts: 27
Joined: Wed Sep 12, 2018 2:55 pm

by jonathon » Thu Sep 27, 2018 10:26 pm

hi,

so you'll almost definitely need to produce separate modules for macOS and windows, however, you probably can update both modules for windows and macos from the same computer.

so if you're working on a mac, after building the .jmo file, you can rename it to a .zip, unzip it and copy the `moduleName/R/moduleName` directory. then unzip the windows .jmo file, replace the `moduleName/R/moduleName` with the latest one from the mac, then zip it back up, rename it back to .jmo ... that should work. well, i'm 80% sure that will work.

jonathon
User avatar
jonathon
 
Posts: 847
Joined: Fri Jan 27, 2017 10:04 am

by Fhas » Fri Oct 19, 2018 2:35 pm

Ok I have had some flawless compiles on Windows, based on my Mac build.

I can't seem to get rid of this error, which only occurs on Windows:
onWindows.PNG
Error on Windows
onWindows.PNG (13.82 KiB) Viewed 1985 times


The weird thing is:
Code: Select all
> packageVersion("Rcpp")
[1] 0.12.19


Any ideas what might be going on?
Fhas
 
Posts: 27
Joined: Wed Sep 12, 2018 2:55 pm

by jonathon » Fri Oct 19, 2018 8:42 pm

ah yeah, that's on me.

the idea with module dependencies, is that a module ships with everything it needs, and is insulated from the other modules - so if another module ships an incompatible version, it won't interfere.

however, what you're finding here is that this isolation is incomplete. in R, it's not possible to *properly* unload an R package, so i have to terminate the background R process, and restart it whenever someone runs an analysis from a different module. as you're seeing, i'm not doing this properly.

so i'd say jmv is shipping with an older Rpp on windows and this is what is getting loaded by mistake. what i'll do is update the version of Rcpp which ships with jmv, and i can procrastinate solving this problem a little longer. we'll push out a new release shortly.

cheers

jonathon
User avatar
jonathon
 
Posts: 847
Joined: Fri Jan 27, 2017 10:04 am

by Fhas » Sat Oct 20, 2018 10:21 am

Thanks! That's awesome... what version should I be looking for?

0.9.2.9 gives me some great (speed) improvements on the Mac, but 0.9.2.8 on Windows gives me the same error.

0.9.5.5 gives the same error in Windows, but for a different version of rlang:
withV0.9.5.5.PNG
withV0.9.5.5.PNG (18.51 KiB) Viewed 1967 times
Fhas
 
Posts: 27
Joined: Wed Sep 12, 2018 2:55 pm

by jonathon » Sat Oct 20, 2018 11:36 pm

yeah, we'll push out a 0.9.5.6 with the new versions.

if you commit your module somewhere (like github) i'll check that it will work.

talk me through what you mean by speed improvements(?)

cheers

jonathon
User avatar
jonathon
 
Posts: 847
Joined: Fri Jan 27, 2017 10:04 am

by Fhas » Sun Oct 21, 2018 10:25 am

Hi Jonathon,

I uploaded the repository from the windows machine here https://github.com/FredHasselman/casnetjmv

What I meant by "speed up" (MAC):
  • I added a function which has a 'while' loop because it has to search a list until some criterion is met (winnowing procedure)
  • When I used it under 0.9.2.8 it would take a lo of time to finish, if it finished at all and jamovi-engine would use up 100% CPU time even after force quitting the main program.
  • With version 0.9.2.9 smaller datasets (N~100) will complete in a second(s), larger datasets will still take a long time

NOTE: I started out coding following your developer's guide, later I studied your modules and I realised I am definitely not being very efficient/clean coding-wise. Even though my functions grew in complexity I basically kept everything in the .run = function(). Happy to get some tips on initialising tables and handling errors and such.
Fhas
 
Posts: 27
Joined: Wed Sep 12, 2018 2:55 pm

by jonathon » Mon Oct 22, 2018 11:05 am

that's a pretty fabulous module fred! i was like "wowsers, that's a lot of stuff" :P

ravi and/or myself will cast an eye over it at some point and give you some feedback.

we'll be uploading the 0.9.5.6 in the next couple of hours, and that will have the newer Rcpp and rlang.

cheers

jonathon
User avatar
jonathon
 
Posts: 847
Joined: Fri Jan 27, 2017 10:04 am

by Fhas » Mon Oct 22, 2018 3:33 pm

Thanks a lot ppl!

I was able to get it to work on Windows:
Capture.PNG
Capture.PNG (39.49 KiB) Viewed 1913 times



Just one thing I had to change wrt to Mac:

ggplot2:positionjitterdodge() - On Windows I got the error "argument seed not recognised" Removing the argument from the code helped, but it *is* an actual argument of the function.

We are using this module in a course right now and so far I am very pleased with the results (though I have some things on my wishlist regarding the interface :) )

When we are done with the course I'll likely want to polish and streamline some things.


Thanks again for the quick support!
Fhas
 
Posts: 27
Joined: Wed Sep 12, 2018 2:55 pm

Next

Return to Module development