2013-05-21 1 views
1

라이브러리를 설치하지 않고 내 테스트 프로그램에 http://freeimage.sourceforge.net/index.html을 포함시킬 수 있습니까? 일부 memset 때문에 컴파일에 실패했습니다.FreeImage는 C에 포함

여기에 제 C 코드가 있습니다. 그것을 작동시키는 어떤 방법이 있습니까? 컴파일을 시도해보고 작동하는 방법을 알려주십시오.

#define NAZIV_DATOTEKE 50 
#include <stdio.h> 
#include "FreeImage.h" 


void FreeImageErrorHandler(FREE_IMAGE_FORMAT fif, const char *message); 
FIBITMAP* GenericLoader(const char* lpszPathName, int flag); 

int main(){ 
    FreeImage_Initialise(); 
    FIBITMAP *dib, *ptr; 
    char ulaz_slika[NAZIV_DATOTEKE] = "bmp_24.bmp"; 
    char izlaz_slika[NAZIV_DATOTEKE] = "free.bmp"; //podrazumevana vrednost 

    dib = GenericLoader(ulaz_slika, 0); 
    //slika = FreeImage_Load(FIF_BMP, "bmp_24.bmp", BMP_DEFAULT); 
    FreeImage_SetOutputMessage(FreeImageErrorHandler); 
    if (dib) { 
     printf("Ucitan \"%s\".\n", ulaz_slika); 
    } 

    FREE_IMAGE_FORMAT fif = FreeImage_GetFileType(ulaz_slika, 0); 
    if ((fif != FIF_BMP) && (fif != FIF_ICO) && (fif != FIF_JPEG) && (fif != FIF_PNG) && (fif != FIF_TIFF)){ 
     printf("Format slike nije podrzan.\n"); 
     return 1; 
    } 


    ptr = FreeImage_ConvertTo24Bits(dib); 
    FreeImage_SetOutputMessage(FreeImageErrorHandler); 
    FreeImage_Unload(dib); 
    FreeImage_SetOutputMessage(FreeImageErrorHandler); 
    dib = ptr; 
    if (dib) { 
     printf("Konvertovan u RGB.\n"); 
    } 


    const char *slika = (const char*)FreeImage_GetBits(dib); 


    if (FreeImage_Save(fif, dib, izlaz_slika, BMP_DEFAULT)) { 
     printf("Snimljen \"%s\".\n", izlaz_slika); 
    } 


    if (dib) { 
     FreeImage_Unload(dib); 
    } 
    FreeImage_DeInitialise(); 
    return 0; 
} 

void FreeImageErrorHandler(FREE_IMAGE_FORMAT fif, const char *message){ 
    printf("\n*** "); 
    if(fif != FIF_UNKNOWN) { 
     if (FreeImage_GetFormatFromFIF(fif)) 
      printf("%s Format\n", FreeImage_GetFormatFromFIF(fif)); 
    } 
    printf(message); 
    printf(" ***\n"); 
} 

FIBITMAP* GenericLoader(const char* lpszPathName, int flag) { 
    FREE_IMAGE_FORMAT fif = FIF_UNKNOWN; 
    // check the file signature and deduce its format 
    // (the second argument is currently not used by FreeImage) 
    fif = FreeImage_GetFileType(lpszPathName, 0); 
    if(fif == FIF_UNKNOWN) { 
     // no signature ? 
     // try to guess the file format from the file extension 
    fif = FreeImage_GetFIFFromFilename(lpszPathName); 
    } 
    // check that the plugin has reading capabilities ... 
    if((fif != FIF_UNKNOWN) && FreeImage_FIFSupportsReading(fif)) { 
     // ok, let's load the file 
     FIBITMAP *dib = FreeImage_Load(fif, lpszPathName, flag); 
     // unless a bad file format, we are done ! 
     return dib; 
    } 
    return NULL; 
} 

답변

1

아니 당신은 할 수 없습니다 않습니다. 소스를 컴파일하려면 링커에 라이브러리가 필요합니다.

+1

또는 더 구체적으로 컴파일러에서 C 코드를 컴파일하기 위해 헤더 파일이 필요하거나 링커가 오브젝트 파일을 연결하는 라이브러리가 필요합니다. – xaxxon

+0

감사합니다. 적어도 지금은 사용하지 않는 라이브러리를 알고 있습니다. – magnumns

+0

틀렸어. 다이나믹 링크 라이브러리는 그가 원하는 것을 정확하게 수행 할 수있게 해줍니다. –