Soucis compilation turbojpeg.h
Bonjour à tous,
Voici un exemple d'un programme qui compresse une image en JPEG avec la librairie libjpeg-turbo.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
| #include <stdio.h>
#include <string.h>
#include <sys/stat.h>
#include "turbojpeg.h"
int main(int argc, char** argv)
{
const int JPEG_QUALITY = 95;
const int COLOR_COMPONENTS = 3;
int width = 720;
int height = 560;
unsigned long size = 0;
unsigned char* compressedImage = NULL;
unsigned char buffer[width * height * COLOR_COMPONENTS];
for (int x = 0; x < 720; x++)
for (int y = 0; y < 560; y++)
{
switch ((x / 80) % 3)
{
case 0:
buffer[(y * 720 + x) * 3] = 255;
buffer[(y * 720 + x) * 3 + 1] = 0;
buffer[(y * 720 + x) * 3 + 2] = 0;
break;
case 1:
buffer[(y * 720 + x) * 3] = 0;
buffer[(y * 720 + x) * 3 + 1] = 255;
buffer[(y * 720 + x) * 3 + 2] = 0;
break;
case 2:
buffer[(y * 720 + x) * 3] = 0;
buffer[(y * 720 + x) * 3 + 1] = 0;
buffer[(y * 720 + x) * 3 + 2] = 255;
break;
}
}
tjhandle compressor = tjInitCompress();
compressedImage = tjAlloc(width * height * COLOR_COMPONENTS);
size = width * height * COLOR_COMPONENTS;
tjCompress2(compressor, buffer, width, 0, height, TJPF_RGB, &compressedImage, &size, TJSAMP_444, JPEG_QUALITY, TJFLAG_NOREALLOC | TJFLAG_ACCURATEDCT);
tjDestroy(compressor);
FILE * fichier = fopen("file.jpeg", "wb");
printf("LENGTH=%ld\n", size);
if (fwrite(compressedImage, size, 1,fichier) != size)
printf("Write Error.\n");
fclose(fichier);
tjFree(compressedImage);
return 0;
} |
Je compile avec :
Code:
gcc -O3 -Wall -o jpeg.o -c jpeg.c
=> pas de soucis
puis :
Code:
gcc -O3 -o jpeg jpeg.c
Et là, j'obtiens :
Code:
1 2 3 4 5 6 7
| /usr/bin/ld: /tmp/ccur3V4Y.o: in function `main':
jpeg.c:(.text.startup+0xb2): undefined reference to `tjInitCompress'
/usr/bin/ld: jpeg.c:(.text.startup+0xbf): undefined reference to `tjAlloc'
/usr/bin/ld: jpeg.c:(.text.startup+0xfd): undefined reference to `tjCompress2'
/usr/bin/ld: jpeg.c:(.text.startup+0x109): undefined reference to `tjDestroy'
/usr/bin/ld: jpeg.c:(.text.startup+0x169): undefined reference to `tjFree'
collect2: error: ld returned 1 exit status |