Safely handling Igor32bit extension and procedure with Igor64bit
Hello all,
Using IgorPro8.
I have an extension `analyzer` in a directory placed under Igor Extensions.
I have two independent ipf files (GUI_1.ipf and GUI_2.ipf) which make a panel, and they call the function in the Extension.
For user, I would like to place them in a safe and simple manner to one of the procedure folders, so that these panels can be used.
All is fine with 32bit IgorPro, but things break with 64bit.
With 64bit, i see `Function Compilation Error` since at initial compile Igor64 sees the function defined in the extension (which is 32bit).
How to place these procedure files safely.
1.) I tried with a `caller.ipf` file seeking to try selective include :
---custom_ipfs/
| - GUI_2.ipf
| - GUI_1.ipf
---IgorProcedures
| - caller.ipf
In this case, the functions in the `GUI_1.ipf` and `GUI_2.ipf` are not loaded.
Content of `caller.ipf`is shown below :
#if !defined(IGOR64BIT) #include "./../custom_ipfs/GUI_2" #include "./../custom_ipfs/GUI_1" #endif
2.) and also with another case with custom_ipf folder inside IgorProcedures
---IgorProcedures | - caller.ipf | - custom_ipfs/ | - GUI_2.ipf | - GUI_1.ipf
Content of `caller.ipf`is shown below :
#if !defined(IGOR64BIT) #include "custom_ipfs/GUI_2" #include "custom_ipfs/GUI_1" #endif
In this case, the functions in the `GUI_1.ipf` and `GUI_2.ipf` are loaded correctly only for 32bit !
Of course, if I place `GUI_1.ipf` and `GUI_2.ipf` in the `Igor Procedures folder`, all is ok with Igor32bit, but Igor64 bit breaks.
Any suggestions.
"IGOR64BIT" is not a symbol that Igor will ever pre-define. Perhaps you meant to use "IGOR64"? For information on those, you can execute this command on Igor's command line:
DisplayHelpTopic "Predefined Global Symbols"However, you might consider the approach used in the first example of:
DisplayHelpTopic "Conditional Compilation"That way, if you were to port your XOP to 64-bit, you don't need to change your Igor code at all--it will just start working once the 64-bit XOP exists.
You might know this already, but Igor Pro 10 and later are 64-bit only applications, so if you ever want to use that version you'll need to port your XOP to 64-bit, if that's possible.
January 26, 2026 at 07:33 am - Permalink
Hello,
Thank you for the heads up.
Conditional compilation is what I was looking for and using the name of the routine with exist() worked well.
January 26, 2026 at 08:04 pm - Permalink