[Winpcap-users] Entry Point in a DLL

George S. Lockwood gslockwood at gmail.com
Mon Aug 7 04:02:31 GMT 2006


Hello Tom,

So far I have simply put the class definition within a cpp file I created by
first copying wpa_cli.c to cwpa.cpp, then putting the following code in near
the top.  The action_file = NULL; line below is the last line of the
original wpa_cli code.  This does the same thing as putting the prototypes
in the .h file I created to declare the cwpa class (yes I could and will
when this issue is resolved, put them in the .h file).

You can see that I have prototyped the functions I call in the destructor
(that's as far as I went before doing an initial build attempt!!).  The
wpa_cli_cleanup function is defined in this cpp file, but the other 2 are in
os_win32.c which is included in the project.

The errors:
CWPA.obj : error LNK2001: unresolved external symbol "void __cdecl
os_program_deinit(void)" (?os_program_deinit@@YAXXZ)
CWPA.obj : error LNK2001: unresolved external symbol "void __cdecl
os_daemonize_terminate(char const *)" (?os_daemonize_terminate@@YAXPBD at Z)

I believe the problem that the VS compiler compiles functions in .c files
differenctly than .cpp files (is this mangling?), so I believe there is a
function declaration keyword I need to use in conjunction with "extern" in
order to tell the C++ compiler that these are c-style functions.

If this is true, Yes you might be right about VS having too many ways of
doing things...I've forgotten more than I remember!! Throw C# in the mix and
things really get foggy.

Here's the code:

static const char *action_file = NULL;

// gsl added
void wpa_cli_cleanup(void);

extern void os_program_deinit(void);
extern void os_daemonize_terminate(const char *pid_file);

CWPA::CWPA()
{
    wpa_cli_quit = 0;
    wpa_cli_attached = 0;

    //gsl implement this later
    wpa_cli_monitor_attached = 0;

    wpa_cli_connected = 0;
    wpa_cli_last_id = 0;
    //strcpy_s( ctrl_iface_dir, _countof( ctrl_iface_dir ),
"/var/run/wpa_supplicant" );    // does this change in windows run
    ctrl_ifname = NULL;
    pid_file = NULL;
    action_file = NULL;
}
CWPA::~CWPA()
{
    free(ctrl_ifname);
    wpa_cli_cleanup();
}

.
.
.


On 8/6/06, Thomas O'Hare <Tom at redtile.com> wrote:
>
> FWIW, put it in your own "h" file for that part of your project.  That
> should declare it or prototype it for use.
>
> Thanks,
> ~ Thomas O'Hare ~
> President, RedTile, Inc. - DBA: RedTile Software
> Web, Wireless, Network, Database & Systems Software
> +1.407.295.9148 ; +49.8651.717950 ; http://www.RedTile.Com/
> Operations Manager; Virtual FoxPro User Group
> Tom at VFUG.Org ; http://www.VFUG.Org/
>
>
> George S. Lockwood wrote:
> > Here's an example:
> >
> > CWPA.obj : error LNK2001: unresolved external symbol "void __cdecl
> > wpa_cli_cleanup(void)" (?wpa_cli_cleanup@@YAXXZ).
> >
> > this comes from putting a call to wpa_cli_cleanup() in the destructor of
> > the
> > class I'm trying to make.  It is not a call to winpcap's dlls but to
> > wpa_cli
> > code C code (actually to its .objs).
> >
> > george
> >
> > On 8/6/06, Gianluca Varenni <gianluca.varenni at cacetech.com> wrote:
> >>
> >>  WinPcap can be used within a C++ application without any problem, you
> >> don't need extern "C" or similar stuff.
> >>
> >> What is the exact linking error you are encountering?
> >>
> >> Have a nice day
> >> GV
> >>
> >> ----- Original Message -----
> >> *From:* George S. Lockwood <gslockwood at gmail.com>
> >> *To:* Tom at redtile.com ; winpcap-users at winpcap.org
> >> *Sent:* Saturday, August 05, 2006 11:28 AM
> >> *Subject:* Re: [Winpcap-users] Entry Point in a DLL
> >>
> >> Hello Thomas,
> >>
> >> I think I'm trying to do something similar but with a standard library
> I
> >> (think) am statically linking.  I'm getting link errors about
> unresolved
> >> externals.  I am try to build the wpa_cli into a class.
> >>
> >> I think my problem is about a class (cpp) file not understanding a lib
> >> build from straight "C" and thereby not finding a c style functions.
> >>
> >> Either I'm getting forgetful (very possible), or involved with .net too
> >> much too recently to remember (also possible) that I'm forgeting the
> >> way to
> >> link C-style functions into a cpp module and call those external
> >> functions.
> >>
> >> What am I forgetting?? Or am I forgetting that it is impossible.  I
> >> thought I needed to declare the externals with something like __decl
> >> or with
> >> "C"    inside the cpp file???????
> >>
> >>
> >>
> >>
> >> thanks for any of your ideas,
> >>
> >> george
> >>
> >> On 8/3/06, Thomas O'Hare <Tom at redtile.com> wrote:
> >> >
> >> > Hello All!
> >> >
> >> > I am using Dev-C++ in C++ mode to try and create an entry point into
> my
> >> > own DLL's based on the WinPCap Libraries.  I need to export several
> of
> >> > my own functions to languages that do not inherently support C typed
> >> > structures.
> >> >
> >> > I am looking for the cleanest, fasted way to create an entry point
> for
> >> > my functions so I can use the DLL as a true library for the
> programming
> >> > languages lacking native structure support.
> >> >
> >> > I can open DLL's in these languages and call functions, but
> especially
> >> > "chained" (Next) structures are very very tricky to work with in any
> >> > language that does not have native support for C typed structures.
> >> >
> >> > Any docs, resources, suggestions, etc, are welcome.
> >> > --
> >> >
> >> > Thanks,
> >> > ~ Thomas O'Hare ~
> >> > President, RedTile, Inc. - DBA: RedTile Software
> >> > Web, Wireless, Network, Database & Systems Software
> >> > +1.407.295.9148 ; +49.8651.717950 ; http://www.RedTile.Com/
> >> > Operations Manager; Virtual FoxPro User Group
> >> > Tom at VFUG.Org ; http://www.VFUG.Org/
> >> > _______________________________________________
> >> > Winpcap-users mailing list
> >> > Winpcap-users at winpcap.org
> >> > https://www.winpcap.org/mailman/listinfo/winpcap-users
> >> >
> >>
> >>  ------------------------------
> >>
> >> _______________________________________________
> >> Winpcap-users mailing list
> >> Winpcap-users at winpcap.org
> >> https://www.winpcap.org/mailman/listinfo/winpcap-users
> >>
> >>
> >> _______________________________________________
> >> Winpcap-users mailing list
> >> Winpcap-users at winpcap.org
> >> https://www.winpcap.org/mailman/listinfo/winpcap-users
> >>
> >>
> >>
> >
> >
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > Winpcap-users mailing list
> > Winpcap-users at winpcap.org
> > https://www.winpcap.org/mailman/listinfo/winpcap-users
> _______________________________________________
> Winpcap-users mailing list
> Winpcap-users at winpcap.org
> https://www.winpcap.org/mailman/listinfo/winpcap-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.winpcap.org/pipermail/winpcap-users/attachments/20060807/78655537/attachment.htm


More information about the Winpcap-users mailing list