Subject: Re: Calling gcc built DLL from .NET (Visual Basic)
From: Danny Smith <[email-masked]>
To: [email-masked]
Cc: [email-masked]
Date: Thu, 5 Jun 2003 10:21:04 +1000 (EST)

From: "Thomas X. Hoban" <thoban at verbalogic dot com> 
--------------------------------------------------------------------------------

> Does anyone have a good example that shows how to create a DLL using
> cygwin/gcc and call it using VB .NET?   I am specifically interested in an
> example that shows how to pass a String variable.  In the example that I
> show below, I am able to call a C function.  I can successfully pass a long
> integer.  But the string that I pass shows garbage in the called function.
> 
> My dll code looks like...
> 
> 
> (test.c)
> 
> #include <stdio.h>
> #include <wtypes.h>
> 
> define EXPORT __declspec(dllexport)
> 
> EXPORT int myTest(char *s1, long i1) {
> 
>     printf("Here is the string %s, here is the integer %ld.\n",s1, i1);
> 
> }
> 
> 

I think VB wants stdcall symbols.  Add WINAPI to above..

> 
> I then compile as follows:
> 
> $ gcc -c test.c
> $ gcc -shared -o test.dll test.o

and -Wl,--add-stdcall-alias when building dll to get undecorated symbol too. 

I don't have a clue about char* -> STRING marshalling. I would have just used
BSTR. 

Danny

http://mobile.yahoo.com.au - Yahoo! Mobile
- Check & compose your email via SMS on your Telstra or Vodafone mobile.

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/