<div>Cédric,</div>
<div> </div>
<div>I've integrated your changes and got the PrintFunctionNames plugin to work.  Thank you so much!</div>
<div> </div>
<div>I've updated my posted patches.</div>
<div> </div>
<div>The only problem left that I know about is the .inc file dependency problem.</div>
<div> </div>
<div>-John<br><br></div>
<div class="gmail_quote">On Tue, May 17, 2011 at 1:17 PM, Cédric Venet <span dir="ltr"><<a href="mailto:cedric.venet@laposte.net">cedric.venet@laposte.net</a>></span> wrote:<br>
<blockquote style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">
<div text="#000000" bgcolor="#ffffff">Hi,<br><br>Thanks for doing the hard work! I found how to make it works. There was a few problems:<br> * a bug in VS: <a href="http://support.microsoft.com/kb/127900" target="_blank">http://support.microsoft.com/kb/127900</a><br>
 * exporting the templated classes was posing problem since they were not instanciated explicitly so do not export them<br> * only export the 4 static members<br><br>I send you back your files, I added a test to verify that a class registered in the dll appeared in the exe. I have no patch since I changed the end lines :( (they were mixed linux/windows). however, the change are simple, remove all SUPPORT_LINKAGE from the registry.h then replace the lines:<br>
<br>    friend class node;<br>    static node *Head,*Tail;<br><br>    friend class listener;<br>    static listener *ListenerHead,*ListenerTail;<br><br>by:<br><br>    friend class node;<br>    SUPPORT_LINKAGE static node *Head;<br>
    SUPPORT_LINKAGE static node *Tail;<br><br>    friend class listener;<br>    SUPPORT_LINKAGE static listener *ListenerHead;<br>    SUPPORT_LINKAGE static listener *ListenerTail;<br><br>you can also remove AST_LINKAGE from regexpdll.cpp<br>
<br>hope this solve your problem!<br><br>Cédric<br><br>Le 17/05/2011 02:29, John Thompson a écrit : 
<div>
<div></div>
<div class="h5">
<blockquote type="cite">
<div>Cédric,</div>
<div> </div>
<div>There are still problems with the various forward and static declarations within the Registry class, even after adding the __declspec(dllexport) directive.</div>
<div> </div>
<div>I've extracted a small project for experimenting with this independently and enclosed it.  I'm using a .tar file because gmail wouldn't let me send a zip.</div>
<div> </div>
<div>I'd appreciate it if you could help me out with it.</div>
<div> </div>
<div>The solution in regexp builds a DLL and a program referencing it.</div>
<div> </div>
<div>Thanks.</div>
<div> </div>
<div>-John<br><br></div>
<div class="gmail_quote">On Mon, May 16, 2011 at 1:11 PM, Cédric Venet <span dir="ltr"><<a href="mailto:cedric.venet@laposte.net" target="_blank">cedric.venet@laposte.net</a>></span> wrote:<br>
<blockquote style="BORDER-LEFT: rgb(204,204,204) 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">
<div text="#000000" bgcolor="#ffffff"><br>Hi,<br><br>I notice that you didn't export the class Registry? I think you only need to add:<br><br>template <typename T, typename U = RegistryTraits<T> ><br>  class SUPPORT_LINKAGE Registry {<br>
  public:<br><br>to make this work [1]. I was not able to use your patch on my system, so I could not try my suggestion sorry. However if this does not solve your problem, I can setup a small testcase. I only rarely used dll, but it seems to me you exported some class which doesn't need to be (all inline function)? I suppose it doesn't hurt except size and perhaps performance (<a href="https://connect.microsoft.com/VisualStudio/feedback/details/633230/-declspec-dllexport-and-inline-functions-slow-compile-time" target="_blank">https://connect.microsoft.com/VisualStudio/feedback/details/633230/-declspec-dllexport-and-inline-functions-slow-compile-time</a>) so as a first approach it is not a problem.<br>
<br>regards,<br>Cédric<br><br>[1] from <a href="http://msdn.microsoft.com/en-us/library/81h27t8c%28v=vs.80%29.aspx" target="_blank">http://msdn.microsoft.com/en-us/library/81h27t8c(v=vs.80).aspx</a> :<br>Because member functions and static data within a class implicitly have external linkage, you can declare them with the *dllimport* or *dllexport* attribute, unless the entire class is exported. If the entire class is imported or exported, the explicit declaration of member functions and data as *dllimport* or *dllexport*is prohibited. If you declare a static data member within a class definition as *dllexport*, a definition must occur somewhere within the same program (as with nonclass external linkage).<br>
<br></div></blockquote></div></blockquote><br></div></div></div></blockquote></div><br><br clear="all"><br>-- <br>John Thompson<br><a href="mailto:John.Thompson.JTSoftware@gmail.com">John.Thompson.JTSoftware@gmail.com</a><br>
<br>