Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Проблема с подключением Jpeg62.dll


Автор: dima1024 17.6.2006, 13:25
Никак не удается подключить библиотеку jpeg62.dll. Хотя lib-файл подлинкован, все равно, при объявлении #include <jpeglib.h> выдает:
[Linker Error] Unresolved external '_jpeg_CreateDecompress' referenced from UNIT1.OBJ
[Linker Error] Unresolved external '_jpeg_stdio_src' referenced from UNIT1.OBJ
[Linker Error] Unresolved external '_jpeg_read_header' referenced from UNIT1.OBJ
[Linker Error] Unresolved external '_jpeg_destroy_decompress' referenced from UNIT1.OBJ
Создавал и новый lib-файл из dll-ки и брал готовый для builder`а, и вставлял "#ifdef __cplusplus
extern "C" { #endif " ... Может кто знает, что не так?
Вот листинг. Прога должна выводить инфу о jpg-файле.
//---------------------------------------------------------------------------
#include <stdio.h>
#include "jpeglib.h"
#pragma hdrstop
//---------------------------------------------------------------------------
typedef struct struct_img {
int width, height, bpp;
} struct_img;
//---------------------------------------------------------------------------
bool get_jpg_info(const char *filename, struct_img *blank)
{
FILE * p_file;
jpeg_decompress_struct cinfo;
if ((p_file = fopen(filename, "rb")) == NULL)
{
fprintf(stderr, "can't open %s\n", filename);
return 0;
}

jpeg_create_decompress(&cinfo);
jpeg_stdio_src(&cinfo, p_file);
jpeg_read_header(&cinfo, TRUE);
...
jpeg_destroy_decompress(&cinfo);

fclose(p_file);
return 0;
}
//---------------------------------------------------------------------------
int main(int argc, char* argv[])
{
struct_img temp;
if ( get_jpg_info("1.jpg", &temp ) )
printf("Error\n");
else
printf("%d,%d,%d\n",temp.width,temp.height,temp.bpp);
return 0;
}
//--------------------------------------------------------------------------- 

Автор: 586 23.6.2006, 14:17
Как lib делал?

А пробовал в начале unit1.cpp после деректив #include написать
#pragma comment (lib, "jpeg62.lib")
или
#pragma link "jpeg62.lib"  

Автор: dima1024 24.6.2006, 12:01
 smile Сегодня проблема разрешилась. Загвоздка была в lib-файле, надо было создавать через import с параметрами -a и -c. После этого код "завелся".
jpeg62.dll - отличная библиотека, но только в паре с libtiff3.dll и zlib1.dll. libtiff3.dll используется для работы с tiff-файлами, а zlib1.dll - с zip-архивами. Для использования в своей проге только jpeg-файлов сойдет и билдоровский класс TJPEGImage.
 smile Пример:
    ...
    TJPEGImage * examp = new TJPEGImage;
    examp->LoadFromFile("file.jpg");
    ...
    delete examp;
    ...
Всем спасибо за внимание. Справился своими силами. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)