2016-03-25 3 views
0

Я прохожу через некоторый программный код Cssocket, содержащий функцию module_open. Я получаю ошибку компоновщика о том это:Undefined Reference To module_open

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

Эта функция определена в файле server.h как:

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

Теперь в том числе только соответствующий код, функция module_open используется в main() следующим образом:

#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); 

    } 

} 

И в случае, если он помогает здесь является struct module от server.h а

/* 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); 
}; 

ответ

0

Попробуйте соединение с -ldl-переключателем. Думаю, вы пытаетесь использовать библиотеку Dynamic Loader?

+0

Да! Просто передал флаг 'ldl', и он работает! Спасибо за это! –