2012-10-28 39 views
3

的,我需要在我的項目JPEG處理能力,所以我決定用JPEG-8D庫,下載我做了平常./configure; make and make install包後。 make test返回沒有錯誤,整個過程中沒有報告任何問題,但是當我在代碼塊10.05編譯失敗時打開example.c。我「一派」一些解決方案,並添加
鏈接(或正確的安裝和連接)JPEG-8D庫

#ifdef __cplusplus 
extern "C" { 
#endif 
... 
#ifdef __cplusplus 
} 
#endif 

jpeglib.h文件,重新編譯,然後添加這些行到鏈接代碼塊的部分: /usr/local/lib/libjpeg.a /usr/local/lib/libjpeg.so 還增加了根據目錄進入目錄的部分。 但是編譯器仍然無法編譯example.c,這裏有一些錯誤的:

> /home/raff/CodeBlocks/jpeg-8d/example.c|116|warning: incompatible implicit declaration of built-in function ‘exit’| 
> example.c|| undefined reference to 'image_width' 
> example.c|| undefined reference to 'image_height' 

如果有人成功地安裝和使用的JPEG文件,請幫幫忙,我有交換IDE和/或Linux發行版沒有問題。

回答

1

你的圖書館的安裝目錄似乎是罰款(否則它會抱怨在編譯期間失蹤jpeglib.h

文件example.c應該是文檔的一部分,而不是一個代碼就可以編譯和使用。請注意,例如,沒有main()。您應該將其作爲參考,瞭解如何編碼用於壓縮和解壓縮jpeg文件的方法。

變量image_widthimage_height(和image_buffer)被聲明爲extern,所以它們被假定爲在其他文件中定義。您可以編寫定義這些變量的程序並填寫緩衝區,然後纔可以使用提供的方法(write_JPEG_fileread_JPEG_file)。

0
  1. 你用靜態或共享庫鏈接?
  2. 如果它是靜態的,你把它後的目標文件的鏈接器的命令行?
  3. 如果它是共享的,並且您使用較新的工具鏈,這也可能是問題。
  4. 如果鏈接正確,readelf -s在共享庫上顯示什麼? nm在靜態庫上顯示的是什麼?
0

我很確定example.c實際上是一個使用這個庫的例子,我沒有檢查它的內容。此外還有一些問題。 寫適當程序後I`ve遇到一個錯誤:

error while loading shared libraries libjpeg.so.8: cannot open shared object file: No such file or directory 

但是,這是由這對shell命令的固定:

ranlib /usr/local/lib/libjpeg.a 
ldconfig /usr/local/lib 

希望這有助於。