Click here to Skip to main content
Rate this: bad
good
Please Sign up or sign in to vote.
See more: C++ DLL size virtual export
I would like to reduce the number of C++ class methods exported from a DLL that show up in the list of exported symbols with mangled names. This is an effort to reduce the size of C++ assemblies. Virtual functions implemented/overriden in a derived class can be accessed from a reference to it's base class. I was wondering if it's possible to selectively export/import all non-virtual constructors and methods, stripping away the virtual methods to reduce the number of exported symbols? So far, I get linker errors when attempting to import such classes. Exporting the entire class exports all virtual methods, thus bloating the assembly. It also exports the vpftable, which doesn't get exported otherwise, but this is the only method that works. I understand providing a factory method can achieve this from a reference to a base class, but those objects are strictly allocated on the heap and forgos stack allocation. Stack allocation us is a must for us because of performance reasons. From what I can tell this is not possible, but I'm hoping someone can shine a light my way and make me happy.
Posted 18-Nov-12 22:51pm

1 solution

Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

Maybe it would be possible to export only some interfaces
(with needed functionality-aggregation(s) by (smart-)pointers) ? Smile | :)
// Header to be "exported" :)

class CInsideClass; // public CInsiderBase, public ...
typedef std::auto_ptr<CInsideClass> CSafeInsider;
 
class (exp_decoration_here) IExpInterface
{
  CSafeInsider m_cInsider;
  
public:
  // Implement the constructor in the CPP-part to allocate the aggregation
  IExpInterface(..);
 
  // Define access to the desired Insider-functions here
  // ...
};
  Permalink  
v3

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 OriginalGriff 515
1 Maciej Los 290
2 Richard MacCutchan 265
3 BillWoodruff 235
4 Suraj Sahoo | Coding Passion 175
0 OriginalGriff 8,804
1 Sergey Alexandrovich Kryukov 7,457
2 DamithSL 5,689
3 Maciej Los 5,279
4 Manas Bhardwaj 4,986


Advertise | Privacy | Mobile
Web03 | 2.8.1411028.1 | Last Updated 19 Nov 2012
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100