Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
 Аватар для S_hmel
3 / 3 / 1
Регистрация: 14.02.2012
Сообщений: 82

Unresolved External в простом консольном проекте

09.04.2012, 12:36. Показов 2616. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Решил написать простой консольный проект в RAD Studio 2010 (С++ Builder).

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
//---------------------------------------------------------------------------
 
#include <vcl.h>
#include <stdio.h>
#include <tiffio.h>
#pragma hdrstop
 
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
 
int main(int argc, char *argv[]){
  // Define an image
  char buffer[25 * 144] = { 0 };
  TIFF *image;
 
  // Open the TIFF file
  if((image = TIFFOpen("output.tif", "w")) == NULL){
    printf("Could not open output.tif for writing\n");
    exit(42);
  }
 
  // We need to set some values for basic tags before we can
  TIFFSetField(image, TIFFTAG_IMAGEWIDTH, 25 * 8);
  TIFFSetField(image, TIFFTAG_IMAGELENGTH, 144);
  TIFFSetField(image, TIFFTAG_BITSPERSAMPLE, 1);
  TIFFSetField(image, TIFFTAG_SAMPLESPERPIXEL, 1);
  TIFFSetField(image, TIFFTAG_ROWSPERSTRIP, 144);
 
  TIFFSetField(image, TIFFTAG_COMPRESSION, COMPRESSION_CCITTFAX4);
  TIFFSetField(image, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_MINISWHITE);
  TIFFSetField(image, TIFFTAG_FILLORDER, FILLORDER_MSB2LSB);
  TIFFSetField(image, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
 
  TIFFSetField(image, TIFFTAG_XRESOLUTION, 150.0);
  TIFFSetField(image, TIFFTAG_YRESOLUTION, 150.0);
  TIFFSetField(image, TIFFTAG_RESOLUTIONUNIT, RESUNIT_INCH);
 
  // Write the information to the file
  TIFFWriteEncodedStrip(image, 0, buffer, 25 * 144);
 
  // Close the file
  TIFFClose(image);
}
 
//---------------------------------------------------------------------------

Как видно из кода, используется библиотека libtiff. Пути к папкам include и lib указаны в C++ Options=>Paths and Directories. При компиляции выдает ошибки:

C++
1
2
3
4
5
6
7
8
9
Checking project dependencies...
Compiling TIFF_1_progect.cbproj (Debug configuration)
[ILINK32 Error] Error: Unresolved external '_TIFFOpen' referenced from C:\USERS\ILYA\DOCUMENTS\RAD STUDIO\PROJECTS\TIFF_EXAMPLES\DEBUG\TIFFIO.OBJ
[ILINK32 Error] Error: Unresolved external '_TIFFSetField' referenced from C:\USERS\ILYA\DOCUMENTS\RAD STUDIO\PROJECTS\TIFF_EXAMPLES\DEBUG\TIFFIO.OBJ
[ILINK32 Error] Error: Unresolved external '_TIFFWriteEncodedStrip' referenced from C:\USERS\ILYA\DOCUMENTS\RAD STUDIO\PROJECTS\TIFF_EXAMPLES\DEBUG\TIFFIO.OBJ
[ILINK32 Error] Error: Unresolved external '_TIFFClose' referenced from C:\USERS\ILYA\DOCUMENTS\RAD STUDIO\PROJECTS\TIFF_EXAMPLES\DEBUG\TIFFIO.OBJ
[ILINK32 Error] Error: Unable to perform link
Failed
Elapsed time: 00:00:00.6

Все используемые функции объявлены в tiffio.h, который билдер точно видит, т.к. не ругается на строчку
C++
1
TIFF *image;
Вот эти функции в tiffio.h:

C++
1
2
3
4
5
6
7
8
9
...
LIBTIFF_DLL_IMPEXP  TIFF* TIFFOpen(const char*, const char*);
...
LIBTIFF_DLL_IMPEXP  int TIFFSetField(TIFF*, ttag_t, ...);
...
LIBTIFF_DLL_IMPEXP  tsize_t TIFFWriteEncodedStrip(TIFF*, tstrip_t, tdata_t, tsize_t);
...
LIBTIFF_DLL_IMPEXP  void TIFFClose(TIFF*);
...

Прошу указать на мою ошибку.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.04.2012, 12:36
Ответы с готовыми решениями:

Непонятные ошибки - unresolved token, unresolved external
Здравствуйте, у меня Visual Studio 2010, и при выполнении кода #include &quot;stdafx.h&quot; #include &lt;windows.h&gt; #pragma...

Unresolved external symbol, unresolved token
Всем привет. У меня тут такое дело: // learncpp.cpp : main project file. #include &quot;stdafx.h&quot; int main() { const int...

error LNK2001: unresolved external symbol---fatal error LNK1120: 4 unresolved externals
Здравствуйте! Занимаюсь программированием не очень долго, прошу объяснить в доступных терминах для начинающего. Выполняя задание, добавил...

16
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,450
09.04.2012, 12:59
консоль без поддержки VCL?

Добавлено через 47 секунд
.. по заголовку вроде "с поддержкой", но при создании может галочка не поставлена была. хотя я не знаю как это там в хе
0
 Аватар для S_hmel
3 / 3 / 1
Регистрация: 14.02.2012
Сообщений: 82
09.04.2012, 13:43  [ТС]
Галочка была поставлена напротив Console App, или что-то вроде того. vcl.h стоял изначально.

Добавлено через 6 минут
Есть ответ на подобный вопрос - сама функция в файле .h не объявлена, или не используется в исходном коде, но в моем случае все объявлено в tiffio.h, вот и не могу разобраться, в чем причина.
0
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,450
09.04.2012, 13:49
может что то вроде Add to project/Lib

Добавлено через 38 секунд
...или #define IMPORT или extern "C"... почему же он пишет _имя...

Добавлено через 44 секунды
..или может файл C...
0
 Аватар для S_hmel
3 / 3 / 1
Регистрация: 14.02.2012
Сообщений: 82
09.04.2012, 14:15  [ТС]
Цитата Сообщение от vxg Посмотреть сообщение
может что то вроде Add to project/Lib

Добавлено через 38 секунд
...или #define IMPORT или extern "C"... почему же он пишет _имя...

Добавлено через 44 секунды
..или может файл C...
Не понял. Надо добавить указанные вами строки в начало исходного кода?
0
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,450
09.04.2012, 15:04
я в том смысле - компилер говорит непонятные внешние функции. значит они не подключены. может быть лежат в либе которую нужно подцепить к проекту что бы он мог быть приленкован к длл.
0
 Аватар для S_hmel
3 / 3 / 1
Регистрация: 14.02.2012
Сообщений: 82
09.04.2012, 15:05  [ТС]
Но я указал в Options путь к дополнительным библиотекам. И в свойствах проекта эти пути тоже есть.
0
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,450
09.04.2012, 15:10
... по поводу дефайна и экстерна - вряд ли это ваш случай. если бы вы линковались с чьей-то самодельной длл она могла потребовать специфических дефайнов перед включением заголовка. при линковке с длл на си мог потребоваться экстерн что бы имена длл начали восприниматься без префиксов _. при межязыковой линковке тоже могли быть танцы с экстерн

Добавлено через 49 секунд
либтифф точно лежит в папке либ? попробуйте на всякий случай явно добавить ее в проект

Добавлено через 1 минуту
у меня к примеру компилер не хотел находит либу в подпапке PSDK - пришлось руками включать
1
 Аватар для S_hmel
3 / 3 / 1
Регистрация: 14.02.2012
Сообщений: 82
09.04.2012, 15:40  [ТС]
Я поступил следующим образом: зашел на официальный сайт этой библиотеки, скачал exe-инсталятор. установил в Program Files. Все, на этом инструкции создателей закончились. В настройках среды добавил пути к библиотеке и к инклюдам. Может, неправильно установил, хотя других способов установки особо-то и нет.
0
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,450
09.04.2012, 15:56
это длл? попробуйте явно добавить в проект ее lib файл
0
 Аватар для S_hmel
3 / 3 / 1
Регистрация: 14.02.2012
Сообщений: 82
09.04.2012, 16:05  [ТС]
Заметил, что в установленной библиотеке имеется файл libtiff.dll.a. Странно. Может стоит подправить расширение.
Расширение нельзя изменить. Расширение ".a" имеют статические библиотеки для Linux. Т.е., archive. Как оно попало в установщик для Windows - загадка. Я так понимаю, с такими библиотеками Билдер не работает.
0
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,450
09.04.2012, 16:14
как и обещал проблема вылечилась явным добавлением libtiff-bcc.lib в проект

Добавлено через 30 секунд
.a - это не для Борланда

Добавлено через 1 минуту
попало оно так - это для gcc, например, для Dev-Cpp
1
 Аватар для S_hmel
3 / 3 / 1
Регистрация: 14.02.2012
Сообщений: 82
09.04.2012, 16:17  [ТС]
Цитата Сообщение от vxg Посмотреть сообщение
это длл? попробуйте явно добавить в проект ее lib файл
Добавлять надо в Project=> Options=>Directories and Conditionals=>BPI/LIB output, да?

Добавлено через 1 минуту
попало оно так - это для gcc, например, для Dev-Cpp[/QUOTE]
Ну, это понятно, я просто сначала не обратил внимания. недоработка разрабов.
0
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,450
09.04.2012, 16:17
я добавил через Project/Add to project
1
 Аватар для S_hmel
3 / 3 / 1
Регистрация: 14.02.2012
Сообщений: 82
09.04.2012, 16:18  [ТС]
Попробую, спасибо.
0
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,450
09.04.2012, 16:18
Цитата Сообщение от S_hmel Посмотреть сообщение
Ну, это понятно, я просто сначала не обратил внимания. недоработка разрабов.
думаю они просто выдают один и тот же архив файлов для всех платформ, просто инсталлер скомпилен для виндовс
1
 Аватар для S_hmel
3 / 3 / 1
Регистрация: 14.02.2012
Сообщений: 82
09.04.2012, 17:29  [ТС]
vxg, вот спасибо, помогли! Надо было внимательней книгу читать!!!!

Добавлено через 1 час 9 минут
Да, еще для работы программы нужны библиотеки jpeg62.dll, libtiff3.dll и zlin1.dll. Я их скопировал прямо в папку с проектом. Билдер о них ничего не говорит, но вот в мануале о libtiff о них сказано.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.04.2012, 17:29
Помогаю со студенческими работами здесь

Странный баг в простом консольном приложении С++
Написал код, все работает как надо вот только оно предлагает вводить названия &quot;призов&quot; со второго, пропуская первый, что не так? ...

Unresolved external
Доброго времени суток. Такая вот байда получается...Суть вот в чем: По заданию преподавателя необходимо было реализовать динамическую...

unresolved external
Имеется сольюшн из 3х файлов: List.h: #include &quot;stdafx.h&quot; #ifndef _LIST_H_ #define _LIST_H_ template &lt;class X&gt; class List ...

Unresolved external
Builder 2010 Error: Unresolved external '__fastcall System::TObject::NewInstance(System::TMetaClass *)' referenced from...

Unresolved external
Проблема следующая: класс &quot;die&quot; хранится отдельным файлом. .h: #ifndef butsH #define butsH class die{ private: int left; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru