Hello Tom,<br><br>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.&nbsp; The action_file = NULL; line below is the last line of the original wpa_cli code.&nbsp; 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).
<br><br>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!!).&nbsp; 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.
<br><br>The errors:<br>CWPA.obj : error LNK2001: unresolved external symbol &quot;void __cdecl os_program_deinit(void)&quot; (?os_program_deinit@@YAXXZ)<br>CWPA.obj : error LNK2001: unresolved external symbol &quot;void __cdecl os_daemonize_terminate(char const *)&quot; (?os_daemonize_terminate@@
YAXPBD@Z)<br><br>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 &quot;extern&quot; in order to tell the C++ compiler that these are c-style functions.
<br><br>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.<br><br>Here's the code:<br><br>static const char *action_file = NULL;
<br><br>// gsl added<br>void wpa_cli_cleanup(void);<br><br>extern void os_program_deinit(void);<br>extern void os_daemonize_terminate(const char *pid_file);<br><br>CWPA::CWPA()<br>{<br>&nbsp;&nbsp;&nbsp; wpa_cli_quit = 0;<br>&nbsp;&nbsp;&nbsp; wpa_cli_attached = 0;
<br><br>&nbsp;&nbsp;&nbsp; //gsl implement this later<br>&nbsp;&nbsp;&nbsp; wpa_cli_monitor_attached = 0;<br><br>&nbsp;&nbsp;&nbsp; wpa_cli_connected = 0;<br>&nbsp;&nbsp;&nbsp; wpa_cli_last_id = 0;<br>&nbsp;&nbsp;&nbsp; //strcpy_s( ctrl_iface_dir, _countof( ctrl_iface_dir ), &quot;/var/run/wpa_supplicant&quot; );&nbsp;&nbsp;&nbsp; // does this change in windows run
<br>&nbsp;&nbsp;&nbsp; ctrl_ifname = NULL;<br>&nbsp;&nbsp;&nbsp; pid_file = NULL;<br>&nbsp;&nbsp;&nbsp; action_file = NULL;<br>}<br>CWPA::~CWPA()<br>{<br>&nbsp;&nbsp;&nbsp; free(ctrl_ifname);<br>&nbsp;&nbsp;&nbsp; wpa_cli_cleanup();<br>}<br><br>.<br>.<br>.<br><br><br><div><span class="gmail_quote">
On 8/6/06, <b class="gmail_sendername">Thomas O'Hare</b> &lt;<a href="mailto:Tom@redtile.com">Tom@redtile.com</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
FWIW, put it in your own &quot;h&quot; file for that part of your project.&nbsp;&nbsp;That<br>should declare it or prototype it for use.<br><br>Thanks,<br>~ Thomas O'Hare ~<br>President, RedTile, Inc. - DBA: RedTile Software<br>Web, Wireless, Network, Database &amp; Systems Software
<br>+1.407.295.9148 ; +49.8651.717950 ; <a href="http://www.RedTile.Com/">http://www.RedTile.Com/</a><br>Operations Manager; Virtual FoxPro User Group<br><a href="mailto:Tom@VFUG.Org">Tom@VFUG.Org</a> ; <a href="http://www.VFUG.Org/">
http://www.VFUG.Org/</a><br><br><br>George S. Lockwood wrote:<br>&gt; Here's an example:<br>&gt;<br>&gt; CWPA.obj : error LNK2001: unresolved external symbol &quot;void __cdecl<br>&gt; wpa_cli_cleanup(void)&quot; (?wpa_cli_cleanup@@YAXXZ).
<br>&gt;<br>&gt; this comes from putting a call to wpa_cli_cleanup() in the destructor of<br>&gt; the<br>&gt; class I'm trying to make.&nbsp;&nbsp;It is not a call to winpcap's dlls but to<br>&gt; wpa_cli<br>&gt; code C code (actually to its .objs).
<br>&gt;<br>&gt; george<br>&gt;<br>&gt; On 8/6/06, Gianluca Varenni &lt;<a href="mailto:gianluca.varenni@cacetech.com">gianluca.varenni@cacetech.com</a>&gt; wrote:<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;WinPcap can be used within a C++ application without any problem, you
<br>&gt;&gt; don't need extern &quot;C&quot; or similar stuff.<br>&gt;&gt;<br>&gt;&gt; What is the exact linking error you are encountering?<br>&gt;&gt;<br>&gt;&gt; Have a nice day<br>&gt;&gt; GV<br>&gt;&gt;<br>&gt;&gt; ----- Original Message -----
<br>&gt;&gt; *From:* George S. Lockwood &lt;<a href="mailto:gslockwood@gmail.com">gslockwood@gmail.com</a>&gt;<br>&gt;&gt; *To:* <a href="mailto:Tom@redtile.com">Tom@redtile.com</a> ; <a href="mailto:winpcap-users@winpcap.org">
winpcap-users@winpcap.org</a><br>&gt;&gt; *Sent:* Saturday, August 05, 2006 11:28 AM<br>&gt;&gt; *Subject:* Re: [Winpcap-users] Entry Point in a DLL<br>&gt;&gt;<br>&gt;&gt; Hello Thomas,<br>&gt;&gt;<br>&gt;&gt; I think I'm trying to do something similar but with a standard library I
<br>&gt;&gt; (think) am statically linking.&nbsp;&nbsp;I'm getting link errors about unresolved<br>&gt;&gt; externals.&nbsp;&nbsp;I am try to build the wpa_cli into a class.<br>&gt;&gt;<br>&gt;&gt; I think my problem is about a class (cpp) file not understanding a lib
<br>&gt;&gt; build from straight &quot;C&quot; and thereby not finding a c style functions.<br>&gt;&gt;<br>&gt;&gt; Either I'm getting forgetful (very possible), or involved with .net too<br>&gt;&gt; much too recently to remember (also possible) that I'm forgeting the
<br>&gt;&gt; way to<br>&gt;&gt; link C-style functions into a cpp module and call those external<br>&gt;&gt; functions.<br>&gt;&gt;<br>&gt;&gt; What am I forgetting?? Or am I forgetting that it is impossible.&nbsp;&nbsp;I<br>&gt;&gt; thought I needed to declare the externals with something like __decl
<br>&gt;&gt; or with<br>&gt;&gt; &quot;C&quot;&nbsp;&nbsp;&nbsp;&nbsp;inside the cpp file???????<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt; thanks for any of your ideas,<br>&gt;&gt;<br>&gt;&gt; george<br>&gt;&gt;<br>&gt;&gt; On 8/3/06, Thomas O'Hare &lt;
<a href="mailto:Tom@redtile.com">Tom@redtile.com</a>&gt; wrote:<br>&gt;&gt; &gt;<br>&gt;&gt; &gt; Hello All!<br>&gt;&gt; &gt;<br>&gt;&gt; &gt; I am using Dev-C++ in C++ mode to try and create an entry point into my<br>&gt;&gt; &gt; own DLL's based on the WinPCap Libraries.&nbsp;&nbsp;I need to export several of
<br>&gt;&gt; &gt; my own functions to languages that do not inherently support C typed<br>&gt;&gt; &gt; structures.<br>&gt;&gt; &gt;<br>&gt;&gt; &gt; I am looking for the cleanest, fasted way to create an entry point for<br>
&gt;&gt; &gt; my functions so I can use the DLL as a true library for the programming<br>&gt;&gt; &gt; languages lacking native structure support.<br>&gt;&gt; &gt;<br>&gt;&gt; &gt; I can open DLL's in these languages and call functions, but especially
<br>&gt;&gt; &gt; &quot;chained&quot; (Next) structures are very very tricky to work with in any<br>&gt;&gt; &gt; language that does not have native support for C typed structures.<br>&gt;&gt; &gt;<br>&gt;&gt; &gt; Any docs, resources, suggestions, etc, are welcome.
<br>&gt;&gt; &gt; --<br>&gt;&gt; &gt;<br>&gt;&gt; &gt; Thanks,<br>&gt;&gt; &gt; ~ Thomas O'Hare ~<br>&gt;&gt; &gt; President, RedTile, Inc. - DBA: RedTile Software<br>&gt;&gt; &gt; Web, Wireless, Network, Database &amp; Systems Software
<br>&gt;&gt; &gt; +1.407.295.9148 ; +49.8651.717950 ; <a href="http://www.RedTile.Com/">http://www.RedTile.Com/</a><br>&gt;&gt; &gt; Operations Manager; Virtual FoxPro User Group<br>&gt;&gt; &gt; <a href="mailto:Tom@VFUG.Org">
Tom@VFUG.Org</a> ; <a href="http://www.VFUG.Org/">http://www.VFUG.Org/</a><br>&gt;&gt; &gt; _______________________________________________<br>&gt;&gt; &gt; Winpcap-users mailing list<br>&gt;&gt; &gt; <a href="mailto:Winpcap-users@winpcap.org">
Winpcap-users@winpcap.org</a><br>&gt;&gt; &gt; <a href="https://www.winpcap.org/mailman/listinfo/winpcap-users">https://www.winpcap.org/mailman/listinfo/winpcap-users</a><br>&gt;&gt; &gt;<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;------------------------------
<br>&gt;&gt;<br>&gt;&gt; _______________________________________________<br>&gt;&gt; Winpcap-users mailing list<br>&gt;&gt; <a href="mailto:Winpcap-users@winpcap.org">Winpcap-users@winpcap.org</a><br>&gt;&gt; <a href="https://www.winpcap.org/mailman/listinfo/winpcap-users">
https://www.winpcap.org/mailman/listinfo/winpcap-users</a><br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt; _______________________________________________<br>&gt;&gt; Winpcap-users mailing list<br>&gt;&gt; <a href="mailto:Winpcap-users@winpcap.org">
Winpcap-users@winpcap.org</a><br>&gt;&gt; <a href="https://www.winpcap.org/mailman/listinfo/winpcap-users">https://www.winpcap.org/mailman/listinfo/winpcap-users</a><br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;<br>&gt;<br>&gt;<br>
&gt; ------------------------------------------------------------------------<br>&gt;<br>&gt; _______________________________________________<br>&gt; Winpcap-users mailing list<br>&gt; <a href="mailto:Winpcap-users@winpcap.org">
Winpcap-users@winpcap.org</a><br>&gt; <a href="https://www.winpcap.org/mailman/listinfo/winpcap-users">https://www.winpcap.org/mailman/listinfo/winpcap-users</a><br>_______________________________________________<br>Winpcap-users mailing list
<br><a href="mailto:Winpcap-users@winpcap.org">Winpcap-users@winpcap.org</a><br><a href="https://www.winpcap.org/mailman/listinfo/winpcap-users">https://www.winpcap.org/mailman/listinfo/winpcap-users</a><br></blockquote></div>
<br>