Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
fuzzytoozy
8 / 8 / 1
Регистрация: 23.11.2012
Сообщений: 94
#1

Unresolved external. Borland ругается - C++

08.02.2013, 02:48. Просмотров 730. Ответов 9
Метки нет (Все метки)

Всем доброго времени! в общем проблема такова, в классе Name имеется статический объект класса fstream f1. При таком раскладе Борланд отказывается компилировать эту программу. Выдает следующее сообщение:

[Linker Error] Unresolved external 'Name::f1' referenced from C:\PROGRAM FILES (X86)\BORLAND\CBUILDER6\PROJECTS\UNIT1.OBJ

Если же сделать объект f1 глобальной переменной - всё функционирует превосходно. В чем есть трабла, друзья? Вот код:

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
 
//---------------------------------------------------------------------------
 
class Name
{
 private:
  static fstream f1;
  string s1;
  string s2;
  int num;
 public:
  Name()
  {}
  static openFile ( )
  {
   f1.open("dat.txt", ios::in | ios::out | ios::binary );
  }
  void setPos ( )
  {
   f1.seekg(0);
   f1.seekp(0);
  }
  void writeData()
  {
   char ans = 'y';
   while( ans == 'y' )
   {
    cout << "\nEnter employer's name: ";
    cin >> s1;
    cout << "\nEnter employer's surname: ";
    cin >> s2;
    cout << "\nEnter employer's number: ";
    cin >> num;
    f1.write(reinterpret_cast<char*>(&(*this)),sizeof(*this));
    cerr << "\nContinue?(Y/N): ";
    cin >> ans;
   }
  }
 
  void readData( )
  {
 
   f1.read(reinterpret_cast<char*>(&(*this)), sizeof(*this));
   cout << "\n Employer's name: " << s1;
   cout << "\n Employer's surname: " << s2;
   cout << "\n Employer's number: " << num << endl;
  }
};
 
//---------------------------------------------------------------------------
int main(int argc, char* argv[])
{
  Name obj;
 
  obj.openFile();
  obj.writeData();
  obj.setPos();
  obj.readData();
 
   system("PAUSE");
 
        return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.02.2013, 02:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Unresolved external. Borland ругается (C++):

[Linker Error] Unresolved external '_main' referenced from C:\PROGRAM FILES (X86)\BORLAND\CBUILDER6\LIB\C0X32.OBJ - C++
незнаю куда функцию main() #include &lt;cstring&gt; #define BASE 10 //ñèñòåìà ñ÷èñëåíèÿ #define MIN_LENGTH_FOR_KARATSUBA 4 //÷èñëà...

ошибка [Linker Error] Unresolved external '_main' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\C0X32.OBJ - C++
При компиляции программы борланд выдает ошибку Unresolved external '_main' referenced from C:\PROGRAM...

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

Unresolved external symbol - C++
В общем, стандартная ошибка линкера: 5&gt;lib1.lib(a.obj) : error LNK2001: неразрешенный внешний символ &quot;_lol&quot; В a.c написана...

Unresolved external symbol - C++
Чем больше я сталкиваюсь с этой ошибкой и чем больше решаю её, тем непонятнее она становится. Скопировал код из одного проекта VS в другой,...

Unresolved external symbol - C++
policy.h #ifndef POLICY_H #define POLICY_H #include &lt;forward_list&gt; #include &quot;vector.h&quot; struct PolicyVector ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
-=ЮрА=-
08.02.2013, 03:18
  #2

Не по теме:

fuzzytoozy, старый борланд Си не умеет линоквать современный стандрат плюсов и систем пауз тоже не знает. Либо смени компилятор либо верни хедерам старый стиль, убери namespace std ну и потом по коду компилятор ещё пару ероров тебе выдаст

0
fuzzytoozy
8 / 8 / 1
Регистрация: 23.11.2012
Сообщений: 94
08.02.2013, 04:32  [ТС] #3
это не первый код, который я пишу на борланде этом. Borland Builder 6. Как я уже сказал, если объявить объект fstream глобальной переменной, а не классовой, то всё скомпилируется превосходно ( включая систему пауз ). Он выдает подобную ошибку лишь иногда и я не понимаю от чего это зависит =/
0
Croessmah
Эксперт CЭксперт С++
13228 / 7500 / 845
Регистрация: 27.09.2012
Сообщений: 18,419
Записей в блоге: 3
Завершенные тесты: 1
08.02.2013, 05:46 #4
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <iostream>
#include <fstream>
#include <cstring>
#include <string>//string используем, а подключать нафиг не надо, да?
using namespace std;
 
//---------------------------------------------------------------------------
 
class Name
{
 private:
  static fstream f1;
  string s1;
  string s2;
  int num;
 public:
  Name()
  {}
  static void openFile ( )//ДОБАВИЛ void
  {
   f1.open("dat.txt", ios::in | ios::out | ios::binary );
  }
  void setPos ( )
  {
   f1.seekg(0);
   f1.seekp(0);
  }
  void writeData()
  {
   char ans = 'y';
   while( ans == 'y' )
   {
    cout << "\nEnter employer's name: ";
    cin >> s1;
    cout << "\nEnter employer's surname: ";
    cin >> s2;
    cout << "\nEnter employer's number: ";
    cin >> num;
    f1.write(reinterpret_cast<char*>(&(*this)),sizeof(*this));
    cerr << "\nContinue?(Y/N): ";
    cin >> ans;
   }
  }
 
  void readData( )
  {
 
   f1.read(reinterpret_cast<char*>(&(*this)), sizeof(*this));
   cout << "\n Employer's name: " << s1;
   cout << "\n Employer's surname: " << s2;
   cout << "\n Employer's number: " << num << endl;
  }
};
fstream Name:: f1;//Читайте про статические переменные в классе
//---------------------------------------------------------------------------
int main(int argc, char* argv[])
{
  Name obj;
 
  obj.openFile();
  obj.writeData();
  obj.setPos();
  obj.readData();
 
   system("PAUSE");
 
        return 0;
}
1
fuzzytoozy
8 / 8 / 1
Регистрация: 23.11.2012
Сообщений: 94
08.02.2013, 23:19  [ТС] #5
Croessmah, спасибо конечно, но что по вашему делает инклуд <cstring>, как не включает string?
0
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
08.02.2013, 23:47 #6
fuzzytoozy, cstring не включает std::string. Он включает сишные функции по работе с чаровыми строками
1
fuzzytoozy
8 / 8 / 1
Регистрация: 23.11.2012
Сообщений: 94
09.02.2013, 18:16  [ТС] #7
I.M., компилятор при включении этого файла на стринг не ругается совсем и всё прекрасно компилирует

Добавлено через 4 минуты
тем не менее я вас понял, спасибо.
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 1
09.02.2013, 18:18 #8
статическая переменная-член класса должна быть объявлена ещё и снаружи класса.
0
fuzzytoozy
8 / 8 / 1
Регистрация: 23.11.2012
Сообщений: 94
09.02.2013, 21:13  [ТС] #9
Kuzia domovenok, спасибо
Croessmah, уже об этом сказал, чем помог. Так что вопрос решен =)
0
MasMaX
7 / 7 / 0
Регистрация: 07.02.2012
Сообщений: 71
28.03.2013, 16:19 #10
Кидайте в меня тапками, но я так и не смог разобраться с проблемой Unresolved external.

Код
[Linker Error] Unresolved external '__fastcall Forms::TScrollingWinControl::AdjustClientRect(Types::TRect&)' referenced from имя_файла.OBJ
[Linker Error] Unresolved external '__fastcall Forms::TCustomForm::AlignControls(Controls::TControl *, Types::TRect&)' referenced from имя_файла.OBJ
[Linker Error] Unresolved external '__fastcall Controls::TWinControl::CustomAlignInsertBefore(Controls::TControl *, Controls::TControl *)' referenced from имя_файла.OBJ
[Linker Error] Unresolved external '__fastcall Controls::TWinControl::CustomAlignPosition(Controls::TControl *, int&, int&, int&, int&, Types::TRect&, const Controls::TAlignInfo&)' referenced from имя_файла.OBJ
[Linker Error] Unresolved external '__fastcall Comctrls::TCustomStatusBar::SetSimpleText(const System::AnsiString)' referenced from имя_файла.OBJ
[Linker Error] Unresolved external '__fastcall Graphics::TCanvas::FillRect(const Types::TRect&)' referenced from имя_файла.OBJ
[Linker Error] Unresolved external '__fastcall Graphics::TCanvas::Rectangle(const Types::TRect&)' referenced from имя_файла.OBJ
[Linker Error] Unresolved external '__fastcall Graphics::TCanvas::StretchDraw(const Types::TRect&, Graphics::TGraphic *)' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\OBJ\JPEG.OBJ
Ошибка появляется при отключении галочки "Build with runtime packages". Программа должна работать на разных компах, поэтому нужно иметь все библиотеки в себе.

Дело по-моему в настройках Biuilder 6, потому что была переустановка билдера и старые проекты не трогались, и раньше работали. Пробовал создавать новый проект и в него импортировать все формы, но это не помогает.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.03.2013, 16:19
Привет! Вот еще темы с ответами:

Unresolved external symbol - C++
header.h: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; class CGraphicsObject { ...

unresolved external symbol - C++
Добрый день. :) Стоит задача разработать шаблонный класс комплексных чисел. Одним из пунктов является решение квадратного уравнения с...

Unresolved external symbol - C++
Читаю книгу по программированию в MFC, хоть она и 13летней давности В общем дошол до создания окна через Resource и создание класса для...

Unresolved external symbol - C++
Я понимаю что ошибка LNK2019 обычно означает что есть объявление функции, но нет ее тела. В моем случае у меня как то через раз это...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
28.03.2013, 16:19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru