IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Soucis compilation turbojpeg.h


Sujet :

C

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 211
    Par défaut Soucis compilation turbojpeg.h
    Bonjour à tous,

    Voici un exemple d'un programme qui compresse une image en JPEG avec la librairie libjpeg-turbo.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc -O3 -Wall -o jpeg.o -c jpeg.c
    => pas de soucis
    puis :
    Et là, j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 748
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 748
    Par défaut
    Il te manque la bibliothèque parce qu'il ne trouve pas le code

    gcc - options for Linking, switch -l

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 211
    Par défaut
    J'avais essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc -ljpeg -O3 -o jpeg jpeg.c
    Mais j'ai le même soucis

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 211
    Par défaut
    la solution suivante marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc -lturbojpeg -O3 -o jpeg jpeg.c
    Merciiiiiiiiiiiiii

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. soucis compilation conjointe avec cimg et iostream
    Par mokaude dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 24/02/2019, 18h13
  2. [SDL 2.0] Soucis compilation 1er programme
    Par Swife dans le forum SDL
    Réponses: 3
    Dernier message: 06/01/2015, 11h18
  3. Soucis compilation procédures stockées
    Par kyrsa dans le forum DB2
    Réponses: 3
    Dernier message: 18/07/2006, 11h30
  4. DRIVER - fonctions dispatch - soucis de compilation
    Par - Robby - dans le forum Windows
    Réponses: 1
    Dernier message: 26/01/2006, 21h13
  5. [DEBUG] petit souci lors de la compilation...
    Par alex6891 dans le forum C
    Réponses: 11
    Dernier message: 29/09/2005, 23h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo