Operating system: win 10
Slicer version: 4.13
Expected behavior: expect to build NetStim
Actual behavior: failed
Hi everyone, I am Dr. Lin. I have to seek for help here because I have been stuck in building of Slicer and extension for a month.
I am interested in the new software Lead OR which is developed by the famous lead DBS team. Lead OR is part of the NetStim extension. So I first built Slicer from source, and Slicer can run without an error, and it seems standard functions and modules are installed. Then I built the NetStim extension according to instructions on its website. I also installed the SDK provided by our local Alpha Omega distributor. However, I can only see the NetStim extension, with Import Atlas, Lead OR, Stereotactic plan, Warp Drive modules, which is similar to the functions installed directly from the extension manager. The most important Alpha Omega module is missing.
We start Slicer using SlicerWithSlicerNetstim.exe, install depend extension(MarkupsToModel, SlicerRT), wrapDriver could be selected, but could not find the alphaomega entry.
log shows " Cannot load library C:\D\E\NetstimReleaseWithAlphaomega\lib\Slicer-4.13\qt-loadable-modules\Release\qSlicerAlphaOmegaModule.dll"
We tried to rebuild the NetStim extension, with shorter folder path (C:\D\E\SNSR), but the error still exists when running SlicerWithSlicerNetstim.exe.
Error(s):
Cannot load library C:\D\E\SNSR\lib\Slicer-4.13\qt-loadable-modules\Release\qSlicerAlphaOmegaModule.dll
In the plugin modules dir, I get some dll files include qSlicerAlphaOmegaModule, Did I build alphaomega plugin correctly?
I don’t think there are a lot of people who have experience building that particular extension so you will probably need to ask the extension developers directly. One thing you might try is to use Process Monitor to track what it’s trying to access right before the error message. It might be looking for another dependency that’s not in the path. Otherwise it might perhaps be a locale issue if something in the path has non-latin characters.
You need to manually enable building of the AlphaOmega module by uncommenting this line:
Probably you have figured this out already, because you have the qSlicerAlphaOmegaModule.dll.
The module folder should only contain module DLLs. Third-party DLLs can go to the module’s bin folder in the install tree. In the build tree, you can make sure a third-party DLL (NeuroOmega_x64.dll) is found by copying it in the same folder as SlicerApp-real.exe (c:\D\S4R\Slicer-build\bin\Release).
Next week is Slicer Project Week. It is exactly for solving this kind of problems. I would recommend to contact Simon Oxenford @simonoxen to see if he can help you during the week.
Thanks @pieper and @lassoan. We’ve been in contact already and got to this point explained here. I suggested to post on discourse to get more suggestions. Wanted to comment this before but only read this now.
Thanks! perhaps this makes some kind of issue, I’ll fix it.
@Lin This is a good pointer to try to debug on your side.
Thank you all for taking your time to give suggestions and share experiences. The reason I am so interested in this is that I think the software is amazing. I’ll try your advice and get back to you soon. Thanks a lot.
and log (http://stella2018.myqnapcloud.cn:5000/share.cgi?ssid=3e53ae7011b843b790cb4e722bb35101)
We compared the results from the monitor and the results from dep lip (dump), and found that these files were not load in the Slicer.
api-ms-win-crt-heap-l1-1-0.dll
api-ms-win-crt-runtime-l1-1-0.dll
api-ms-win-crt-math-l1-1-0.dll
api-ms-win-crt-string-l1-1-0.dll
We confirmed that these dll files exist in the windows we are using. And we copies these files to the folder of Alpha Omega module, but the issue resumed.
We are not sure why these files are not loaded, and whether it is responsible to my issue here. Just to let you know what we found, hope useful.
Many thanks to you all! @lassoan@simonoxen@pieper
Many DLL loading errors can be discovered using Dependency Walker. Launch Dependency Walker using Slicer.exe --launch path/to/depends.exe and drag-and-drop the DLL that fails to load. Dependency walker was created before side-by-side assemblies existed, so there are always some false positives (api-ms-win-crt… and the like are usually false positives, you don’t need to worry about them).
If Dependency Walker does not uncover anything useful then you need to use sxstrace tool. See instructions here.
Hi all, after a long time of moving back and forth, with the help of my two friends, Alpha Omega module is finally installed. There was a package missing, which was Microsoft Visuala C++ 2019, redistributiable package. We installed it manually, then it finally got through. I can now connect to Neuro Omega, although I still do not know how to use the software.
Thank you all for suggestions! @pieper@lassoan@simonoxen
BTW, is there any sort of specification manual or similar?
thank you for writing this! I also tried to install the NetStim extension (I would like to use WarpDrive). I installed the extension from the developer tool but WarpDrive does not show up (Only Lead-OR, StereotacticPlan and ImportAtlas?
thank you so much for your help - I have installed it! Basically, my issue is that when I normalise postoperative T1s to the MNI space sometimes the resection cavity sags (and for example regions that are resected appear to be preserved). I would like to use WarpDrive to correct for this on the postoperative normalised T1 and then apply the transformation to correct the postoperative cavity. I tried to use the postoperative normalised T1 as input but this is not possible, would you have any advice? I looked at the tutorial in YouTube but I could not find how to do this.
Thank you for your quick answer. Basically, I can open WarpDrive, but in ‘input displacement field’ it is not possible to input any nifti - meaning that is not possible to change ’none’ (if that is what is supposed to do, as I imagine that a first imaged has to be displaced to a second image)
what Slicer version are you using? WarpDrive used to have input displacement field label, now it is input. I suggest you update Slicer and the extension.
The input can be either:
A volume
A grid transform. In this case the grid transform (normalization output) should ideally be set to transform another volume.
The output is a grid transform. You can use this to transform the input volume or transform.