Home All Groups Group Topic Archive Search About

Possible to use pinvoke to call DLL built with cygwin?

Author
31 Oct 2006 1:25 AM
Sammy Yu
Hi guys,
   I'm trying to port an application onto Windows that was originally
developed for UNIX using rpc, pthreads, and AF_UNIX sockets.  I have
used cygwin to compile this application successfully.  One of the
components built is a DLL which I want to invoke from a C Sharp
application.  However, the application crashes whenever I call this DLL
via pinvoke in C Sharp.

************** Exception Text **************
System.DllNotFoundException: Unable to load DLL 'perm.dll': Invalid
access to memory location. (Exception from HRESULT: 0x800703E6)
   at WinPcapRedirectorUI.Perm.meme()
   at WinPcapRedirectorUI.MainForm.statisticsButton_Click(Object
sender, EventArgs e) in
C:\eclipse\workspace\winperm\WinPcapRedirectorUI\MainForm.cs:line 74
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons
button, Int32 clicks)

I verified that the cygwin*.dll are in the path.   I made a strip down
version of a dll, it exhibited the same behavior.  Next, I compiled the
library with -mno-cygwin flag which surprisingly worked.  I suspect
that cygwin1.dll does not work with pinvoke.  Can anybody confirm this
is true?  I prefer not to have to port the native application to Visual
C or mingw32 as there are a lot of rpc and AF_UNIX sockets.  Are there
any other alternatives?  Thanks in advance for your help!

Regards,
Sammy Yu

AddThis Social Bookmark Button