2012-05-29 125 views
0

我正在處理code :: blocks 10.05,我想在c/C++中讀取一個TIFF圖像文件。爲此,我使用LibTiff庫,因此我將tiffio.h作爲頭文件。現在,當我編譯,我得到一個錯誤「的過程與狀態1.終止,我也給給鏈接庫的完整路徑進程終止狀態1

整個生成日誌說:

鏈接控制檯可執行文件:BIN \發佈\ tifff.exe

的mingw32-G ++ EXE:E:\ Image:沒有這樣的文件或目錄

的mingw32-G ++ EXE:變換\圖書館\ tifflib \庫\的libtiff:沒有這樣的文件或目錄

進程以狀態1結束(0分鐘s,8秒) 0錯誤,0警告

+0

鏈接器沒有找到庫。目錄樹中的文件「tifflib \ libs \ libtiff」在哪裏? – gcbenison

+0

Thx很多響應我的查詢,我的文件是在E:\ Image_Transforms \ Libraries \ tifflib \ libs \ libtiff ...和它的一個庫包含頭文件..請幫助我... – Kushal

回答

2

鑑於您提供的輸出,它看起來就像@ gcbenison所說的鏈接程序,並沒有發現libtiff。更重要的是,鑑於它顯示了兩行輸出,我假設你的libtiff庫位於「E:\ Image Transforms \ Libraries \ tifflib \ libs \ libtiff」中,對吧?

嗯,Code :: Blocks doesn't seem to like帶空格的路徑。因此,嘗試將「Image Transforms」重命名爲「Image_Transforms」,更正Code :: Blocks中的庫路徑並重試。

編輯:闡述了答案

同時,一定要確保這樣你就可以編譯的libtiff庫。我從GNUwin32項目下載了libtiff 3.8.2-1.exe進行測試,並且工作完美無瑕。嘗試執行以下操作來構建使用libtiff的最低限度工作的程序:

  • 在C:\ GnuWin32中安裝上述libtiff庫。安裝完成後,你會在該目錄下有很多目錄,包括bin,contrib,doc,include,lib等等。
  • 在Code :: Blocks中創建一個新的控制檯應用程序項目;
  • Tell Code :: Blocks它是一個C程序;
  • 創建項目後,點擊您的項目,然後點擊「Build options ...」,訪問「Build options」對話框;
  • 在「鏈接器設置」選項卡的「鏈接庫」框架中,單擊「添加」並添加libtiff.dll.a。如果你在C:\ GnuWin32中安裝了libtiff,你想要的庫將是C:\ GnuWin32 \ lib \ libtiff.dll.a;
  • 在「搜索目錄」選項卡,你會:
    • 選擇「編譯器」選項卡,並添加「C:\的GnuWin32 \包括」給它;
    • 選擇「鏈接器」選項卡並添加「C:\ GnuWin32 \ lib」;
  • 在「構建選項」對話框中單擊「確定」,因爲現在一切都應該是確定的。

您可以嘗試立即構建您的程序,看看構建是否成功。我用的第一個例子中Graphics programming with libtiff, Part 2作爲測試程序:

#include <stdio.h> 
#include <stdlib.h> 
#include <tiffio.h> 
int main() 
{ 
    TIFF *output; 
    uint32 width, height; 
    char *raster; 
    printf("Trying to write TIFF...\n"); 
    if((output = TIFFOpen("output.tif", "w")) == NULL){ 
    fprintf(stderr, "Could not open outgoing image\n"); 
    exit(42); 
    } 
    width = 42; 
    height = 42; 
    if((raster = (char *) malloc(sizeof(char) * width * height * 3)) == NULL){ 
    fprintf(stderr, "Could not allocate enough memory\n"); 
    exit(42); 
    } 
    TIFFSetField(output, TIFFTAG_IMAGEWIDTH, width); 
    TIFFSetField(output, TIFFTAG_IMAGELENGTH, height); 
    TIFFSetField(output, TIFFTAG_COMPRESSION, COMPRESSION_DEFLATE); 
    TIFFSetField(output, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG); 
    TIFFSetField(output, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_RGB); 
    TIFFSetField(output, TIFFTAG_BITSPERSAMPLE, 8); 
    TIFFSetField(output, TIFFTAG_SAMPLESPERPIXEL, 3); 
    if(TIFFWriteEncodedStrip(output, 0, raster, width * height * 3) == 0){ 
    fprintf(stderr, "Could not write image\n"); 
    exit(42); 
    } 
    TIFFClose(output); 
    printf("TIFF written successfully.\n"); 
    return 0; 
} 

現在嘗試建立(按Ctrl + F9)和運行程序。我遵循上面提到的步驟,並讓我的程序編譯和工作。

對於構建,代碼:: Blocks的輸出是(我叫我的程序的libtiff):

-------------- Build: Debug in libtiff --------------- 

Compiling: main.c 
Linking console executable: bin\Debug\libtiff.exe 
Output size is 27,93 KB 
Process terminated with status 0 (0 minutes, 0 seconds) 
0 errors, 0 warnings 

對於運行,它的輸出:

Trying to write TIFF... 
TIFF written successfully. 

Process returned 0 (0x0) execution time : 0.125 s 
Press any key to continue. 
+0

Thxx很多先生..我已將其更改爲image_transforms,但仍顯示相同的錯誤。在爲一個未知的庫設置上述路徑之後,在project \ properties \ libraries中,當我編譯它時,會出現libfinder錯誤,提示「沒有找到庫的配置並要求我去檢測對話框。現在,當我去對話框,它顯示了我缺少上述路徑的定義,並給出了一個選項來下載這個缺失的定義,但是當我嘗試下載這個代碼::塊沒有響應.. :(:(請幫助我...有人請回應這個查詢... thx預先.. – Kushal

+0

我編輯了答案,試圖幫助你多一點。 – renatoc

+0

Thxx很多先生它已經gr8的幫助。遵循所有的步驟,因爲你提到和實施烏爾示例code.Its構建是成功的bt我運行它,它給出了一個錯誤,說「程序無法啓動bcoz libtiff3.dll丟失」和生成日誌說「檢查存在:E:\ CBoutput \ Tiffs \ bin \ Debug \ Tiffs.exe 執行: 「C:\ Program Files(x86)\ CodeBlocks/cb_console_runner.exe「E:\ CBoutput \ Tiffs \ bin \ Debug \ Tiffs.exe」(位於E:\ CBoutput \ Tiffs \中) 過程以狀態-1073741510(2分20秒)終止 「&再次thx很多幫助我out.for最後一次絕對幫助我解決這個問題。 – Kushal