When I try to ccall printf from cygwin1.dll (which should be equivalent to 
msys-2.0.dll) from inside a cygwin mintty terminal, I get a longer error 
message "fatal error - cygheap base mismatch detected - This problem is 
probably due to using incompatible versions of the cygwin DLL."

Loading and using 2 different C runtime libraries (the posix cygwin dll, 
and the non-posix msvcrt used by mingw-w64) from inside the same 
application is unlikely to work. If you need to work with libraries that 
can only be built in a posix environment, and you can only work with them 
via loading them into process memory (as opposed to IPC over something like 
ZMQ, or pipes, or the filesystem), then the highest chance of success would 
be to use a hypothetical version of Julia built against the same posix 
environment. If libuv supported building on Cygwin (it doesn't, Cygwin does 
not implement the asyncio posix extensions used in libuv) then there could 
hypothetically be a Cygwin package of Julia that you would be better off 
using for this. For now, either fix the posix-only library you're trying to 
use so it can be built natively on Windows, or find another way to 
communicate with it.


On Wednesday, October 7, 2015 at 9:27:40 PM UTC-7, Bill Hart wrote:
>
> I understand that under normal circumstances, for least difficulties, one 
> wants to build dlls using the mingw-w64 gcc if one wants to use it from 
> Julia. This makes a dll which is not dependent on msys-2.0.dll.
>
> My question is: should I expect to be unable to use *any* dlls built using 
> the MSYS2 gcc (if I also provide msys-2.0.dll obviously), even in theory? 
>
> If not, does anyone know why this is the case? depends22.exe seems to be 
> able to open such dlls and see the symbols therein, so it seems in all 
> respects to be a standard dll. What is different about it that makes it 
> inaccessible from native applications like Julia?
>
> The question is relevant because of the large amount of software out there 
> which absolutely relies on lots of posix stuff, and can't be built with 
> mingw-w64. Such software needs msys-2.0.dll for the posix layer.
>
> Basically I just built a dll with MSYS2's gcc and whilst Julia dlopen's 
> it, any attempt to call functions in it results in a ReadOnlyMemoryError. 
> Somehow I thought I actually had this working in the past, but I must have 
> misled myself somehow.
>
> Any help in understanding what's going on would be greatly appreciated.
>
> Bill.
>

Reply via email to