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