2016-03-25 12 views
0

Ich gehe durch einen C-WebSocket-Programmiercode mit einer module_open-Funktion. Ich bin ein Linker-Fehler immer dies besagt:Undefiniert Referenz zu module_open

/tmp/ccJ3uaHB.o: In function `main': 
main.c:(.text+0x8a): undefined reference to `module_open' 
collect2: ld returned 1 exit status 

Diese Funktion in einer Datei definiert ist server.h als:

extern struct server_module* module_open (const char* module_path); 

jetzt nur einen entsprechenden Code, einschließlich der Funktion module_open in main() wird wie folgt verwendet:

#include <stdio.h> 
#include <netdb.h> 
#include "server.h" 
#include <string.h> 

int main() 
{ 
    struct server_module* module = NULL; 
    const char* page; 

    if(*page == '/' && strchr(page + 1, '/') == NULL) 
    { 
     char module_file_name[64]; 
     snprintf(module_file_name, sizeof(module_file_name), "%s.so", page + 1); 

     /* Try to open the module. */ 
     module = module_open (module_file_name); 

    } 

} 

Und falls es hilft hier die struct module von server.h auch

/* An instance of a loaded server module. */ 
struct server_module { 
    /* The shared library handle corresponding to the loaded module. */ 
    void* handle; 
    /* A name describing the module. */ 
    const char* name; 
    /* The function which generates the HTML results for this module. */ 
    void (* generate_function) (int); 
}; 

Antwort

0

Versuchen Sie die Verbindung mit -ldl-Schalter. Ich denke, Sie versuchen, die Dynamic Loader-Bibliothek richtig zu verwenden?

+0

Ja! Habe gerade 'ldl' Flag übergeben und es funktioniert! Danke dafür! –