C LibHaru ссылка на <functions>не определена - PullRequest
0 голосов
/ 21 июня 2019

Мне нужно использовать LibHaru в проекте, и я скачал и установил его, настройка и сборка работали нормально.Но теперь, когда я пытаюсь использовать его в коде, не распознает функции.

Я пытаюсь в дистрибутиве Linux Mint.HPDF_Doc, Page и Font распознаны.

# This is a template Makefile generated by rpcgen

# Parameters

CLIENT = vuelos_client
SERVER = vuelos_server

SOURCES_CLNT.c = 
SOURCES_CLNT.h = 
SOURCES_SVC.c = 
SOURCES_SVC.h = 
SOURCES.x = vuelos.x

TARGETS_SVC.c = vuelos_svc.c vuelos_server.c vuelos_xdr.c 
TARGETS_CLNT.c = vuelos_clnt.c vuelos_client.c vuelos_xdr.c 
TARGETS = vuelos.h vuelos_xdr.c vuelos_clnt.c vuelos_svc.c vuelos_client.c vuelos_server.c

OBJECTS_CLNT = $(SOURCES_CLNT.c:%.c=%.o) $(TARGETS_CLNT.c:%.c=%.o)
OBJECTS_SVC = $(SOURCES_SVC.c:%.c=%.o) $(TARGETS_SVC.c:%.c=%.o)
# Compiler flags 

CFLAGS += -g 
LDLIBS += -lnsl
RPCGENFLAGS = 

# Targets 

all : $(CLIENT) $(SERVER)

$(TARGETS) : $(SOURCES.x) 
    rpcgen $(RPCGENFLAGS) $(SOURCES.x)

$(OBJECTS_CLNT) : $(SOURCES_CLNT.c) $(SOURCES_CLNT.h) $(TARGETS_CLNT.c) 

$(OBJECTS_SVC) : $(SOURCES_SVC.c) $(SOURCES_SVC.h) $(TARGETS_SVC.c) 

$(CLIENT) : $(OBJECTS_CLNT) 
    $(LINK.c) -o $(CLIENT) $(OBJECTS_CLNT) $(LDLIBS) 

$(SERVER) : $(OBJECTS_SVC) 
    $(LINK.c) -o $(SERVER) $(OBJECTS_SVC) $(LDLIBS)

 clean:
     $(RM) core $(TARGETS) $(OBJECTS_CLNT) $(OBJECTS_SVC) $(CLIENT) $(SERVER)
#include "hpdf.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <setjmp.h>
#include <math.h>

jmp_buf env;

#ifdef HPDF_DELL
void __stdcall
#else
void
#endif

error_handler (HPDF_STATUS error_no, HPDF_STATUS detail_no, void *user_data) {
    printf("ERROR: error_no=%04X, detail_no=%u\n", (HPDF_UINT)error_no, (HPDF_UINT)detail_no);
    longjmp(env, 1);
}

//tons of code

//Handle PDF
HPDF_Doc pdf;
HPDF_Page page;
HPDF_Font font;
float tw;
const char * titulo = "FACTURACION VUELO";

//tons of code

pdf = HPDF_New (error_handler, NULL);
if(!pdf){
    printf("Lo sentimos, ha habido un error, contacte con un administrador\n");
    break;
}
if(setjmp(env)){
        HPDF_Free (pdf);
        break;
}
HPDF_SetCompressionMode (pdf, HPDF_COMP_ALL);
font = HPDF_GetFont (pdf, "Helvetica", NULL);
HPDF_SetPageMode (pdf, HPDF_PAGE_MODE_USE_OUTLINE);
page = HPDF_AddPage (pdf);
HPDF_Page_SetSize (page, HPDF_PAGE_SIZE_A4, HPDF_PAGE_PORTRAIT);
HPDF_Page_SetFontAndSize (page, font, 24);
tw = HPDF_Page_TextWidth (page, titulo);
HPDF_Page_BeginText (page);
HPDF_Page_TextOut (page, (HPDF_Page_GetWidth(page) -tw) / 2, HPDF_Page_GetHeight(page) - 50, titulo);
HPDF_Page_EndText (page);
HPDF_Page_BeginText (page);
HPDF_Page_MoveTextPos (page, 60, HPDF_Page_GetHeight(page) -60);
HPDF_Free (pdf);

Выход - ошибка ссылки на функцию, не определенную

Выход:

opresor@opresor: ~ / Descargas / PracticaFinal $ make -f Makefile.vuelos

vuelos_client.o: En la función `vuelos_1 ':

/ home / opresor / Descargas / PracticaFinal / vuelos_client.c: 508: ссылка на `HPDF_New 'определитель греха

/ home / opresor / Descargas / PracticaFinal / vuelos_client.c: 514: ссылка на` HPDF_Free' определитель греха

/ home / opresor / Descargas/PracticaFinal/vuelos_client.c:517: referencia a 'HPDF_SetCompressionMode' определитель греха

/ home / opresor / Descargas / PracticaFinal / vuelos_client.c: 518: ссылка ``

и т. Д.

collect2: ошибка: ld вернул 1 состояние выхода

Makefile.vuelos: 39: сбой рецепта для целевого объекта 'vuelos_client *

make: *** [vuelos_client] Ошибка 1

1 Ответ

2 голосов
/ 21 июня 2019

Я не знаком с rpcgen и не могу сказать, что полностью понимаю, что здесь происходит.Но я бы посоветовал вам попытаться добавить -lhpdf к строке LDLIBS += -lnsl, чтобы она читала

LDLIBS += -lnsl -lhpdf

Предоставление опции командной строки вида -llibrary для компилятора (по крайней мере, для * 1008)* и clang), говорит компоновщику искать в определенном наборе каталогов что-то вроде liblibrary.a или liblibrary.so (если это общая библиотека) и фактически связывать вашу программу с этим.AFAICT, имя библиотеки для libharu является чем-то вроде libhpdf.so, поэтому предлагается добавить эту опцию в переменную LDLIBS.

...