Re: dll compatability table
- Posted by ChrisB (moderator) Jan 03, 2016
- 1687 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