Module not found error

Hi Guys,

I have a very strange problem in Igor (now 6.22). I've written and compiled and XOP on my laptop with Visual Studio 10 under Win 7 and everything worked fine. Now I copied the XOP to another computer (running Win XP) on which the newest Igor version is running as well. Copied the XOP file (have also tried with shortcut to local copy) to C:\Documents and Settings\...\Igor Pro 6 User Files\Igor Extensions.

Now everytime I start Igor I get the Error message: module not found
-> I've already copied the whole Visual Studio project and made a shortcut from there but that doesn't change anything.

I hope somebody can help me here,

Patrick
This is most-likely happening because your XOP requires a DLL installed by Visual C++.

To fix it, edit the C/C++ settings for the VC project. In the Code Generation section, under Runtime Library, make sure it is set to "Multi-threaded Debug" for the debug configuration and "Multi-threaded Release" for the release configuration. If it is set to "Multi-threaded Debug DLL" or "Multi-threaded Release DLL", it will require a DLL installed by VC.
In case you want to link on purpose not statically against the visual studio libraries you have to install the VC Redistributable package along with your XOP on every computer.
Just use the package shipped with Visual Studio, located for my Visual Studio 2005, in C:\Programme\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\vcredist_x86.
The 'Visual Studio runtime' packages can also be downloaded from the Microsoft website.

Note that in general Microsoft recommends using the multi-threaded DLL option, especially for DLLs, and tends to discourage static linking. I don't think that makes any difference in the case of an Igor XOP, but I always stick with multi-threaded DLL for my projects.
Hi there

Sorry for bringing up this topic again, but I am facing a very similar problem. I have a set of IGOR XOPs compiled on two different computers (one old, one new) both with the following specs:
IGOR v. 6.12 A,
XOPtoolkit v. 6
windows XP,
Visual C/C++ 8 SP1 with redistributables installed.

On the older computer (which has 2 processors) my IGOR XOPs are compiled and work perfectly. When I initialize IGOR it reads the XOPs as it should and all the functions are nicely available for use.

Now, on the newer computer (which has 8 processors), I can compile all the XOPs without any problems in VC 8 and the build logs are identical to those on the old computer. The crazy thing is, that when I initialize IGOR it correctly loads all XOPs besides one! The XOP that causes a problem runs a GUI to a CCD camera and is programmed to acquire images. All the camera dll's should be correctly installed on the computer as I can compile in VC 8 and get the correct release files (and run the camera using other softwares), but when i run the XOP in IGOR I get the "Specified modul is not found" error... I have also made sure that alle the shortcuts and folders are correctly set. Furthermore, the compiler is set up exactly as on the old computer with "Multithreaded" and not "Multithreaded DLL"...

I am running out of ideas of how to make IGOR recognize this module. Do You have any suggestions how I can proceed with this issue?

Thanks!





I believe that when you install VC8 it installs its redistributable DLLs in the Windows System32 folder so that they are generally available. Thus the usual problem is that the XOP works on the machine on which it was compiled but does not work on another machine without VC8. The solution to this is to use static runtime libraries rather than DLLs as described in the next paragraph.

To use static runtime libraries, on the machine where it works, change the Runtime Library setting in the C/C++ Properties section of the Properties window as follows:
  • Runtime Library: Multi-Threaded (/MTd) for the debug configuration; Multi-Threaded (/MT) for the release
    configuration.


That may not work if it conflicts with libraries that you are linking with but if it works then your XOP will not require the VC8 redistributables.

While this will make your XOP better (useable on any machine so far as the C runtime library is concerned), my guess is that it will not solve the problem because you are missing some DLLs required by other libraries that you are linking with. To figure this out use the Dependency Walker program (http://dependencywalker.com/).