From: Jeremy G. <jn...@nt...> - 2003-02-14 10:12:25
|
Hi Luke, A simple example is: class __declspec(dllexport) Foo { public: int Bar(int n) { return 2*n; } }; This class will not get exported unless I actually refer to one of its functions from within the DLL, eg by adding the following function: void dummy() { Foo a; int n = a.Bar(5); } or by adding a constructor to Foo and declaring an instance. Actually, I have now discovered that each member function only gets exported if it is either referred to from within the DLL or if its body is outside of the class definition. Regards, Jeremy Godfrey > -----Original Message----- > From: min...@li... > [mailto:min...@li...] On Behalf Of > Luke Dunstan > Sent: 14 February 2003 02:35 > To: jn...@nt...; min...@li... > Subject: Re: [Mingw-users] Exporting classes from a DLL > > > > > >From: "Jeremy Godfrey" <jn...@nt...> > >To: <min...@li...> > >Subject: [Mingw-users] Exporting classes from a DLL > >Date: Thu, 13 Feb 2003 20:19:00 -0000 > > > >Hi, > > > >I have a simple C++ class in a DLL and I am trying to export it. > >However, the only way I can get it to be exported is to refer to it > >from within the DLL itself, eg to declare an instance of the class. > >Otherwise the linker seems to ignore it. Is there a simple > way around > >this? > > > >Regards, > >Jeremy Godfrey > > > > An example of the non-working code would help, but if you > have this in your > header file: > > class __declspec(dllexport) Foo > { > public: > void Bar(); > }; > > And this in your .cpp file: > > void Foo::Bar() > { > } > > Then the member function should be exported. Or are you > trying to do this > with a template class or something? > > Luke --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.449 / Virus Database: 251 - Release Date: 27/01/2003 |