1. dll compatability table
- Posted by ChrisB (moderator) Dec 30, 2015
- 1817 views
Hi
I've just come across another frustrating dll incompatability issue
iup requires eu4.10, while sdl and sqlite require eu4.05
running on win8.1 64 bit, with 32 bit dlls and 32 bit euphorias
I suspect these aren't the only issues out there.
One fix around this is to name the eui.exe with the version number, ie eui405.exe and eui411.exe, and run from a batch file.
But there has to be a better solution. There is some incompatability between these dlls nd the versions of euphoria. What changed between these two releases? Unfortunately, this is where my usefulness stops.
However, something useful might be to gather the incompatabilities together, soto this end I have started a table of dll compatabilities - if anyone has any others, please add them
http://openeuphoria.org/wiki/view/Compatability%20issues.wc#category_Compatability%20issues
Cheers
Chris
2. Re: dll compatability table
- Posted by SDPringle Dec 30, 2015
- 1797 views
Another over con linux is the glibc 2.15 is required for the binaries created by the translator on the latest Mint. Also the interpreter and eubins I maintain also require glibc 2.15. It means if you drop a Linux eui binary on a random system that runs Linux. It might not work.
If a library handles Euphoria objects only in Euphoria code, it doesn't matter which version is used. Not withstanding bugs.
3. Re: dll compatability table
- Posted by jimcbrown (admin) Dec 30, 2015
- 1794 views
Hi
I've just come across another frustrating dll incompatability issue
iup requires eu4.10, while sdl and sqlite require eu4.05
running on win8.1 64 bit, with 32 bit dlls and 32 bit euphorias
I suspect these aren't the only issues out there.
http://openeuphoria.org/wiki/view/Compatability%20issues.wc#category_Compatability%20issues
One thing I noticed about the table is that it lists the bits, but it doesn't specify what the bits are for. I'm guessing it's for the operating system.
However, I think there's value in adding a separate 64/32bit value for Eu/dll and one for the OS, as one can have w8.1 64bit + 32bit eu 4.1 as well as w8.1 64bit + 64bit eu 4.1, and these combinations are likely to be different with respect to dll compatibilities.
4. Re: dll compatability table
- Posted by jimcbrown (admin) Dec 30, 2015
- 1830 views
Another over con linux is the glibc 2.15 is required for the binaries created by the translator on the latest Mint. Also the interpreter and eubins I maintain also require glibc 2.15. It means if you drop a Linux eui binary on a random system that runs Linux. It might not work.
glibc 2.15 is from jan 2012: http://sourceware.org/glibc/wiki/Release/2.15
I think we can presume anyone using an older glibc knows what they are doing and can built from source themselves.
In any case, it typically is technically possible to get such a newer binary to run on an older glibc: http://www.lightofdawn.org/wiki/wiki.cgi/NewAppsOnOldGlibc http://www.trevorpounds.com/blog/?p=103
So, if it ever turns out that we do need to support the older glibcs, then we can do it. I'm just not sure that this is the most urgent task right now.
5. Re: dll compatability table
- Posted by mattlewis (admin) Dec 30, 2015
- 1745 views
One thing I noticed about the table is that it lists the bits, but it doesn't specify what the bits are for. I'm guessing it's for the operating system.
However, I think there's value in adding a separate 64/32bit value for Eu/dll and one for the OS, as one can have w8.1 64bit + 32bit eu 4.1 as well as w8.1 64bit + 64bit eu 4.1, and these combinations are likely to be different with respect to dll compatibilities.
The bits should be for the version of Euphoria / dll. They must match or it won't work. The OS architecture isn't quite as important (though it's certainly possible that OS version matters). If you're trying to use 32-bits stuff on a 64-bits OS you might need to install some extra stuff (at least on Linux, all the basic plumbing should be there by default on Windows).
Matt
6. Re: dll compatability table
- Posted by jimcbrown (admin) Dec 30, 2015
- 1772 views
http://openeuphoria.org/wiki/view/Compatability%20issues.wc#category_Compatability%20issues
The bits should be for the version of Euphoria / dll. They must match or it won't work. The OS architecture isn't quite as important (though it's certainly possible that OS version matters).
Agreed, but the current version of the table (as I write this) clearly has the bits refering to the OS arch - every entry has 64bits listed, including the 4.0.5 ones (which comes only in a 32bit eu version).
7. Re: dll compatability table
- Posted by ChrisB (moderator) Dec 30, 2015
- 1787 views
Hi
Yes, sorry, assumptions. The bits refer to the os, not the euphoria and dll, which should match. Also can't run 64 bit eu on a 32 bit os. either. Feel free to edit the table - its not set in stone.
Cheers
Chris
8. Re: dll compatability table
- Posted by mattlewis (admin) Dec 30, 2015
- 1773 views
http://openeuphoria.org/wiki/view/Compatability%20issues.wc#category_Compatability%20issues
The bits should be for the version of Euphoria / dll. They must match or it won't work. The OS architecture isn't quite as important (though it's certainly possible that OS version matters).
Agreed, but the current version of the table (as I write this) clearly has the bits refering to the OS arch - every entry has 64bits listed, including the 4.0.5 ones (which comes only in a 32bit eu version).
Oh, yeah, I had meant to mention that but then forgot to.
Matt
9. Re: dll compatability table
- Posted by andi49 Jan 03, 2016
- 1663 views
Hi
I've just come across another frustrating dll incompatability issue
iup requires eu4.10, while sdl and sqlite require eu4.05
running on win8.1 64 bit, with 32 bit dlls and 32 bit euphorias
I suspect these aren't the only issues out there.
One fix around this is to name the eui.exe with the version number, ie eui405.exe and eui411.exe, and run from a batch file.
But there has to be a better solution. There is some incompatability between these dlls nd the versions of euphoria. What changed between these two releases? Unfortunately, this is where my usefulness stops.
However, something useful might be to gather the incompatabilities together, soto this end I have started a table of dll compatabilities - if anyone has any others, please add them
http://openeuphoria.org/wiki/view/Compatability%20issues.wc#category_Compatability%20issues
Cheers
Chris
Hallo
I had a look at sqlite (from the Rapideuphoria archive)
The problem seems to be a cdecl/stdcall issue.
For whatever reason Eu4.0.x can handle this, but Eu4.1 seems to be more rigid.
(tested with sqlite 3.9.2, i also changed the includes to the new Eu4 includes.)
-- in wrapper.e -- in global function link_func(atom dll, sequence name, sequence args, atom result) -- change handle = define_c_func(dll,name, args, result) -- to handle = define_c_func(dll, '+'&name, args, result) -- in global function link_proc(atom dll, sequence name, sequence args) -- change handle = define_c_proc(dll,name, args) -- to handle = define_c_proc(dll, '+'&name, args)
Andreas
btw: same for sdl
10. Re: dll compatability table
- Posted by jimcbrown (admin) Jan 03, 2016
- 1664 views
I had a look at sqlite (from the Rapideuphoria archive)
The problem seems to be a cdecl/stdcall issue.
For whatever reason Eu4.0.x can handle this, but Eu4.1 seems to be more rigid.
btw: same for sdl
Have you tried building 4.0 with MinGW and seeing what happens?
I believe this is because of the switch from OpenWatcom to MinGW. OpenWatcom's C compiler has a special trick to it that lets it work with both cdecl and stdcall conventions at the same time (well, at least in some (most?) cases), but MinGW doesn't. (If we really really really wanted to, we could emulate this ourselves in MinGW by using assembly language, but I haven't seen much demand for this.)
11. Re: dll compatability table
- Posted by andi49 Jan 03, 2016
- 1694 views
I had a look at sqlite (from the Rapideuphoria archive)
The problem seems to be a cdecl/stdcall issue.
For whatever reason Eu4.0.x can handle this, but Eu4.1 seems to be more rigid.
btw: same for sdl
Have you tried building 4.0 with MinGW and seeing what happens?
I believe this is because of the switch from OpenWatcom to MinGW. OpenWatcom's C compiler has a special trick to it that lets it work with both cdecl and stdcall conventions at the same time (well, at least in some (most?) cases), but MinGW doesn't. (If we really really really wanted to, we could emulate this ourselves in MinGW by using assembly language, but I haven't seen much demand for this.)
Hallo
It works with Eu4.0.6 build with gcc4.9.2
(maybe it crashes after the stack is exhausted, but i just did simple tests).
It crashes directly with Eu4.1 build with the same compiler gcc4.9.2 from tdm-gcc
This is a bug in the wrapper, not in the OS or in Eu. The bug needs to be removed in the wrapper.
The change from Eu4.0 to Eu4.1 just unmasked the bug.
That's my point of view.
Andreas
12. Re: dll compatability table
- Posted by ChrisB (moderator) Jan 03, 2016
- 1671 views
Hi
I've just come across another frustrating dll incompatability issue
iup requires eu4.10, while sdl and sqlite require eu4.05
running on win8.1 64 bit, with 32 bit dlls and 32 bit euphorias
I suspect these aren't the only issues out there.
One fix around this is to name the eui.exe with the version number, ie eui405.exe and eui411.exe, and run from a batch file.
But there has to be a better solution. There is some incompatability between these dlls nd the versions of euphoria. What changed between these two releases? Unfortunately, this is where my usefulness stops.
However, something useful might be to gather the incompatabilities together, soto this end I have started a table of dll compatabilities - if anyone has any others, please add them
http://openeuphoria.org/wiki/view/Compatability%20issues.wc#category_Compatability%20issues
Cheers
Chris
Hallo
I had a look at sqlite (from the Rapideuphoria archive)
The problem seems to be a cdecl/stdcall issue.
For whatever reason Eu4.0.x can handle this, but Eu4.1 seems to be more rigid.
(tested with sqlite 3.9.2, i also changed the includes to the new Eu4 includes.)
-- in wrapper.e -- in global function link_func(atom dll, sequence name, sequence args, atom result) -- change handle = define_c_func(dll,name, args, result) -- to handle = define_c_func(dll, '+'&name, args, result) -- in global function link_proc(atom dll, sequence name, sequence args) -- change handle = define_c_proc(dll,name, args) -- to handle = define_c_proc(dll, '+'&name, args)
Andreas
btw: same for sdl
Hi
On Linux to get the euiup wrapper working, I had to remove the '+' from each of the names. So I tried a quick experiment with sqlite (added '+'& as described above, and sure enough the c functions and procedures couldn't be linked. (eu4.05)
Looks like the wrapper has to be sorted to allow for PLATFORM, but IMHO this should be handled by the interpreter - is there should be no requirement for th'+' no matter what the calling convention - the interpreter / binder should handle it. This would remove a layer of complexity from the eu programmer. Is there away for the interpreter to tell programmatically what the calling convention is?
Cheers
Chris
13. Re: dll compatability table
- Posted by jimcbrown (admin) Jan 04, 2016
- 1649 views
Hi
On Linux to get the euiup wrapper working, I had to remove the '+' from each of the names. So I tried a quick experiment with sqlite (added '+'& as described above, and sure enough the c functions and procedures couldn't be linked. (eu4.05)
This doesn't make any sense. I just tried this (in euphoria/demo/unix/callc.ex) and adding the '+' to the names works just fine on Linux/GNU.
14. Re: dll compatability table
- Posted by ChrisB (moderator) Jan 04, 2016
- 1697 views
Would you like me to run a simplified standard example?
Cheers
Chris
15. Re: dll compatability table
- Posted by jimcbrown (admin) Jan 04, 2016
- 1621 views
Would you like me to run a simplified standard example?
Cheers
Chris
Yes, that'd help...
16. Re: dll compatability table
- Posted by ghaberek (admin) Jan 04, 2016
- 1667 views
On Linux to get the euiup wrapper working, I had to remove the '+' from each of the names. So I tried a quick experiment with sqlite (added '+'& as described above, and sure enough the c functions and procedures couldn't be linked. (eu4.05)
This doesn't make any sense. I just tried this (in euphoria/demo/unix/callc.ex) and adding the '+' to the names works just fine on Linux/GNU.
Agreed. I develop a lot of stuff on Linux with C library calls and I've never had a problem with keeping the '+'.
-Greg