Я прохожу через некоторый программный код 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);
};
Да! Просто передал флаг 'ldl', и он работает! Спасибо за это! –