0

所以我试图在我的应用程序中使用 LZO。这是我包含它的方式:

#include "lzoconf.h"
#include "lzodefs.h"
#include "lzo1x.h"
/* portability layer */
static const char *progname = NULL;
#define WANT_LZO_MALLOC 1
#define WANT_XMALLOC 1
#include "portab.h"

然后在我做的应用程序中:

if (lzo_init() != LZO_E_OK)
{
    printf("internal error - lzo_init() failed !!!\n");
    printf("(this usually indicates a compiler bug - try recompiling\nwithout optimizations, and enable '-DLZO_DEBUG' for diagnostics)\n");
    return 4;
}

它编译正常。编译期间没有错误或警告。

但是,当我尝试运行我的应用程序时,出现两个错误:

/home/richard/client/src/portab.h:145: undefined reference to `__lzo_align_gap'

portab.h 中这一行的哪些点:

if (__lzo_align_gap(p, (lzo_uint) sizeof(lzo_align_t)) != 0)
{
    printf("%s: C library problem: malloc() returned mis-aligned pointer!\n", progname);
    exit(1);
}
return p;

在我的应用程序中:

/home/richard/client/src/main.cc:108: undefined reference to `__lzo_init_v2'

这指向:

if (lzo_init() != LZO_E_OK)
{
    printf("internal error - lzo_init() failed !!!\n");
    printf("(this usually indicates a compiler bug - try recompiling\nwithout optimizations, and enable '-DLZO_DEBUG' for diagnostics)\n");
    return 4;
}

我的源目录中有所有头文件:

config.h
lzo1x.h
lzoconf.h
lzodefs.h
miniacc.h
portab.h
portab_a.h

我究竟做错了什么?

我正在 Anjuta ide 的 Ubuntu 10.10 中编译我的应用程序。

4

1 回答 1

1

标题是不够的,您需要链接到库。你读过文档吗?

于 2010-11-20T23:20:01.920 回答