1. dll compatability table

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

new topic     » topic index » view message » categorize

2. Re: dll compatability table

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.

new topic     » goto parent     » topic index » view message » categorize

3. Re: dll compatability table

ChrisB said...

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.

new topic     » goto parent     » topic index » view message » categorize

4. Re: dll compatability table

SDPringle said...

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.

new topic     » goto parent     » topic index » view message » categorize

5. Re: dll compatability table

jimcbrown said...

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

new topic     » goto parent     » topic index » view message » categorize

6. Re: dll compatability table

mattlewis said...

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).

new topic     » goto parent     » topic index » view message » categorize

7. Re: dll compatability table

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

new topic     » goto parent     » topic index » view message » categorize

8. Re: dll compatability table

jimcbrown said...
mattlewis said...

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

new topic     » goto parent     » topic index » view message » categorize

9. Re: dll compatability table

ChrisB said...

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

new topic     » goto parent     » topic index » view message » categorize

10. Re: dll compatability table

andi49 said...

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.)

new topic     » goto parent     » topic index » view message » categorize

11. Re: dll compatability table

jimcbrown said...
andi49 said...

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

new topic     » goto parent     » topic index » view message » categorize

12. Re: dll compatability table

andi49 said...
ChrisB said...

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

new topic     » goto parent     » topic index » view message » categorize

13. Re: dll compatability table

ChrisB said...

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.

new topic     » goto parent     » topic index » view message » categorize

14. Re: dll compatability table

Would you like me to run a simplified standard example?

Cheers

Chris

new topic     » goto parent     » topic index » view message » categorize

15. Re: dll compatability table

ChrisB said...

Would you like me to run a simplified standard example?

Cheers

Chris

Yes, that'd help...

new topic     » goto parent     » topic index » view message » categorize

16. Re: dll compatability table

jimcbrown said...
ChrisB said...

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

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu