2013-10-16 64 views
0

我嘗試使用現在在version 9中提供的衆所周知的「jpeglib」。如何使用MS Visual C++ 2010 Express設置jpeglib

概述:我使用微軟的Visual C++ 2010速成在C編程起動器和最後讀了C-書。我的目標是將RGB(.bmp)文件壓縮成JPEG格式。所以我下載了jpeglib(v9),讀取所有的安裝文件等等* .txt文件。有可能編譯C文件得到cjpeg.exe,djpeg.exe,jpeg.lib等等。

這一成功後,我試圖用example.c得到更深的JPEG和控制壓縮。 - >它沒有工作。然後我嘗試使用OpenCV中包含的jpeglib。相同的非工作結果,而OpenCV代碼示例已成功編譯。

我搜索了大量的樣本,問題解決方案和技巧如何使用jpeglib。我在這裏找到的最有用的信息。但在結果中,我仍然無法編譯自己的jpeg工具或example.c(重寫write_JPEG_file()函數)。

問題:在什麼基礎知識可能是錯誤的,當所有其他程序員只使用在他們的代碼#include "jpeglib.h"成功運行JPEG功能?對我來說,包括這個文件似乎還不夠。正因爲如此,我不得不問你,並重新啓動一年前的Question,這也沒有幫助解決我的probs。由於多次嘗試解決這些問題,我無法爲您提供特定的錯誤消息。

這是我的當前MS-VC++ 2010配置使用的OpenCV 2.4.6:

  1. C/C++ - >常規 - >附加包含目錄:
    • C:\的OpenCV \構建\包括
    • C:\的OpenCV \建立\包括\的OpenCV
    • C:\的OpenCV \建立\包括\ opencv2
    • C:\的OpenCV \包括
    • C:\ OpenCV的\包括\ OpenCV的
    • C:\ OpenCV的\包括\ opencv2
    • C:\ OpenCV的\的3rdParty \ libjpeg的
  2. 鏈接器 - >常規 - >附加庫目錄:
    • C:\的OpenCV \建立\ 86 \ VC10 \ lib中
  3. 鏈接器 - >輸入 - >附加依賴:
    • opencv_core246d.lib
    • opencv_imgproc246d.lib
    • opencv_highgui246d.lib
    • opencv_ml246d。LIB
    • opencv_video246d.lib
    • opencv_features2d246d.lib
    • opencv_calib3d246d.lib
    • opencv_objdetect246d.lib
    • opencv_contrib246d.lib
    • opencv_legacy246d.lib
    • opencv_flann246d.lib
    • jpeg.lib [我加入到C:\ opencv \ build \ x86 \ vc10 \ lib]

最後一些線程我已經閱讀:

如果有什麼想你想知道我會盡我所能添加這些信息!

編輯 - 某些錯誤消息:

1>jpeg_coder.obj : error LNK2001: unresolved external symbol ""unsigned char * image_buffer" ([email protected]@3PAEA)". 

1>jpeg_coder.obj : error LNK2001: unresolved external symbol ""int image_height" ([email protected]@3HA)". 

1>jpeg_coder.obj : error LNK2001: unresolved external symbol """int image_width" ([email protected]@3HA)". 

第一個符號應該jpeglib.h可以通過typedef爲JSAMPLE FAR *JSAMPROW, 第二和第三rdjpgcom.c被定義爲unsigned int image_height, image_width;

也許,有很多運氣的,我想出了讓jpeglib運行需要做些什麼。在當前狀態下,我必須檢查並仔細檢查我的問題解決方案是否正確。在這一點上非常感謝您對我的問題的關注。只要我確信我將發佈解決方案。

問題解決方案:我沒有正確設置使用jpeglib的OpenCV。我犯的錯誤是鏈接錯誤的* .lib文件。正確的鏈接文件是libjpegd.lib。太糟糕了,jpeglib v6.2包含在OpenCV 2.4.6中而不是v9中。在OpenCV裏添加HAVE_JPEG來使用jpeglib函數的提示我完全忽略了。 目前問題已解決。

+0

這個問題太長了,但是你沒有寫出「它沒有工作」的問題# –

+0

對不起,長期以來的問題! _沒有工作_表示缺少幾個聲明或函數,它們位於'jpeglib.h','jdatadst.c','jcapimin。c'和更多的文件。我什至不知道哪些文件是必要的是可編譯的文件集(最小配置)。 – watashi

+0

要獲得您的問題的答案,您需要提供錯誤消息 - 編譯器或鏈接器錯誤,運行時崩潰信息等。 –

回答

0

問題解決方案:我沒有正確設置使用jpeglib的OpenCV。我犯的錯誤是鏈接錯誤的* .lib文件。

正確的鏈接文件是libjpegd.lib

太糟糕了,jpeglib v6.2包含在OpenCV 2.4.6而不是v9中。在OpenCV裏添加HAVE_JPEG來使用jpeglib函數的提示我完全忽略了。感謝所有嘗試解決此問題的人。 目前問題已解決。

相關問題