3.1 Bibliothek Linuxversion

Neben den beiden eigentlich genutzten Funktionen sind noch die Funktionen _init() und _fini() enthalten, die beim Laden beziehungsweise Entladen der DLL aufgerufen werden (siehe Einsprungpunkte beim Laden oder Entladen einer dynamischen Bibliothek).

///////////////////////////////////////////////////////////////////////
//
// Time-stamp: "(09.05.01 20:41) demodll.cpp [Klaus Wachtler]"
//
//
// Kompilieren mit:
//  g++ -shared demodll.cpp -o libdemodll.so
// (falls Ausnahmen gewünscht; dann sind _init() und _fini()
// auszukommentieren), oder 
//  g++ -shared -nostartfiles demodll.cpp -o libdemodll.so
// (_init() und _fini() möglich, aber keine Ausnahmen).
//

static int    Wert = 0;

extern "C" int summe( int a, int b )
{
  return a + b;
}

extern "C" int immereinsmehr( void )
{
  if( Wert>6 )
    {
      throw( 125 );
    }

  return Wert++;
}

// Ab hier kann der ganze Rest entfallen, wenn man ihn nicht braucht:

//#include <stdio.h>
//
//extern "C" void _init( void )
//{
//  printf( "Bibliothek geladen\n" );
//}
//
//extern "C" void _fini( void )
//{
//  printf( "Bibliothek beendet\n" );
//}


//                                                                       
///////////////////////////////////////////////////////////////////////

Die Beispielbibliothek kann folgendermaßen übersetzt werden:

klaus@aw33:~/db/linux > g++ -Wall -shared demodll.cpp -o libdemodll.so
Dadurch erhält man das shared object libdemodll.so.



www.wachtler.de