[an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive]
 
[an error occurred while processing this directive] [an error occurred while processing this directive]
Skåne Sjælland Linux User Group - http://www.sslug.dk Home   Subscribe   Mail Archive   Forum   Calendar   Search
MhonArc Date: [Date Prev] [Date Index] [Date Next]   Thread: [Date Prev] [Thread Index] [Date Next]   MhonArc
 

Re: [CPROG] undefined symbols for en plugins plugin



Peter Maersk-Moller <sslug@sslug> writes:

> > De globale symboler in hovedprogrammet selv bliver tilgængelige ved at
> > linke Netscape med -rdynamic.  Ellers søges der kun i de biblioteker en
> > DSO er eksplicit linket med.
> 
> Mener du, hvis jeg selv kompilere Netscape/Mozilla ? Det vil måske virke
> for mig, men ikke for alle andre, der har downloadet den officielle
> version.

Nej. Det var blot en opsummering af hvordan søgning efter dynamiske
symboler foregår.

> > Du kunne eksportere den funktionalitet som dine second-tier plugins
> > skal bruge i et separat bibliotek, og linke dem og dit hoved-plugin
> > med dette bibliotek.
> 
> Jeg er ikke helt sikker på, at jeg forstår. Jeg har playeren, der
> er en Netscape plugin (hoved-plugin) og så har jeg playerens
> codec-plugins (second-tier plugins). De funktioner som codec-plugins'ne
> skal bruge er kompileret separate, men linket sammen med hoved-pluginen.
> Foreslår du, at i stedet for at linke disse funktioner med hovedplugin'en,
> så linker jeg så skal jeg linke disse funktioner med hver enkelt
> plugin ?

Ja. Hvis ikke dit hoved-plugin er åbnet med RTLD_GLOBAL er det den
eneste måde de kan se symbolerne på.

En anden mulighed kunne være at overføre pointere til de funktioner
som plugins har brug for, som parameters. Altså:

hoved plugin:
struct functions {
  void (*doSomething) ();
  void (*doSomethingElse) ();
} functions;

functions.doSomething = doSomething;
functions.doSomethingElse = doSomethingElse;

plugin = dlopen(...);
init = dlsym(plugin, "init");
init(&functions);

og second-tier plugin:
void init(struct functions *f) {
  f->doSomething();
  f->doSomethingElse();
}


> > Ellers kunne du prøve at linke de second-tier plugins med dit
> > hoved-plugin -- måske vil det blive korrekt fundet selvom at det ikke
> > ligger i de kataloger som den dynamiske linker normalt gennemsøger.
> 
> Jeg kan ikke linke codec-plugin'erne med playeren grundet foreskelle
> i licensbetingelser og grundet softwarepatenter - desværre.

Så har du måske et licensproblem -- hvis tingene virkede som du håbede
på og second-tier plugins kunne kalde funktioner i hoved-plugin er de
jo linket dynamisk sammen, i hvert fald som GPL forstår det.

Ellers kunne ethvert firma tage et GPL program, lave lidt om på det så
det kan loade shared objects og sælge proprietære shared objects som
gav ekstra muligheder, uden at licensere dem under GPL.

Hvis det er dig der skriver plugin-koden så skal du bare licensere den
som BSD eller lignende, så skulle du være kompatibel med det meste.

-- 
===============================================================
<sslug@sslug>                           Herlev, Denmark     
<URL:http://www.andreasen.org/>                             <*>   
===============================================================



 
Home   Subscribe   Mail Archive   Index   Calendar   Search

 
 
Questions about the web-pages to <www_admin>. Last modified 2005-08-10, 20:09 CEST [an error occurred while processing this directive]
This page is maintained by [an error occurred while processing this directive]MHonArc [an error occurred while processing this directive] # [an error occurred while processing this directive] *