Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
denfox_pro
0 / 1 / 2
Регистрация: 30.10.2012
Сообщений: 113
1

СБилдер6. От чего такая ошибка: [Linker Error] Unresolved external 'Tovar::Show()' referenced from E:

04.02.2014, 19:22. Просмотров 1147. Ответов 4
Метки нет (Все метки)

Я даже при создании проэкта снимал галочки use vcl и multi threaded.
вот код если интересно может там ошибка:
Класс Tovar.h:
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
#ifndef Tovarh
#define Tovarh
 
class Tovar {
char* Name; // имя
int Inc; //количесто
float Money; //стоимость
 
public:
  Tovar(); // конструктор без параметров
  Tovar(char*,int,float); // конструктор с параметрами
  Tovar(const Tovar&); // конструктор копирования
  ~Tovar(); //деструктор
  char * InpName();  //функция получения названия товара
  int InpInc(); //функция получения количества
  float InpMoney(); //функция получения стоимости
  void EditDat(char*,int,float); //функция изменения всех данных
  void Show();   //вывод всех данных
}; 
#endif
 
Tovar::Tovar () { //конструктор без параметров
 setlocale (0,"");
 cout<<"\nКонструктор без параметров вызван для объекта."<<this<<endl;
 Name = new char('\0'); //выделяем память символ "от сердца к солнцу";
 Inc=0;
 Money=0;
}
 
Tovar::Tovar(char*NAME, int N, float MONEY) {  //конструктор с параметрами
 Name = new char [strlen(NAME)+1];
 strcpy(Name,NAME);
 Inc=N;
 Money=MONEY;
 cout<<"\n Конструктор с параметрами вызван для объекта"<<this<<endl;
}
 
Tovar::Tovar (const Tovar& ob) //конструктор копирования
{
    setlocale (0,"");
    cout<< "\nКонструктор копирования вызван для объекта. " << this <<endl;
    Name = new char [strlen(ob.Name)+1];
    strcpy (Name,ob.Name);
    Inc = ob.Inc;
    Money = ob.Money;   
}
 
Tovar::~Tovar ()  //~деструктор
{
    setlocale (0,"");
    cout << "\nВызов деструктора. "<<this<<endl;
    delete Name;
}
Главная прога:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <vcl.h>
#include <iostream.h>
using namespace std;
#include <Tovar.h>
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
void main()
{
        Tovar();
        Tovar First("БазУка",14,88.0); // Конструктор с параметрами
        Tovar Default=First; // Конструктор копирования
        Default.Show();
        system("pause");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2014, 19:22
Ответы с готовыми решениями:

Ошибка [Linker Error] Unresolved external '_Form1' referenced from G\.obj
Как устранить ошибку? файл .cpp ...

Ошибка [Linker Error] Unresolved external 'TForm1::' referenced from C:\USERS\DESKTOP\PROJECT2.OBJ
//--------------------------------------------------------------------------- ...

Ошибка [Linker Error] Unresolved external '__fastcall TForm1::FormCreate(System::TObject *)' referenced from
Помогите разобраться в чем ошибка...

[Linker Error] Unresolved external '_main' referenced
Не могу нормально скомпилировать обычный консольный код, в чём может быть...

[Linker Error] Unresolved external '_Form1' referenced from
Только начал изучать С++, обложился книгами, пишу элементарную прогу &quot;Hello...

4
SatanaXIII
Супер-модератор
Эксперт С++
5773 / 2772 / 376
Регистрация: 01.11.2011
Сообщений: 6,744
Завершенные тесты: 1
05.02.2014, 09:57 2
В Tovar.h добавьте описание метода Show.
C++
1
2
3
4
void Tovar::Show()
{
// Все дела
}
1
System16v
3 / 3 / 1
Регистрация: 19.02.2014
Сообщений: 115
27.05.2015, 16:39 3
Подскажите,где ошибка.Никак не соображу где накосячил . По книге Дейтела изучаю раздел класс-наследования. Был пример,ввел вроде все правильно,все нужные файлы как указано подключил. Вылетает куча ошибок Linker Error,что он не может найти?Ведь подключены же файлы вроде все. Вот код
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
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream>
#include <cstdlib>
#include <iomanip>
#include "Unit2.h"
 
using namespace std;
 
int main()
{
 BasePlusCommissionEmployee employee("Bob","Lewis","333-33-3333",5000,.04,300);
 
 // установить формат вывода чисел с плавающей точкой
 cout << fixed << setprecision(2);
 
 // получить данные служащего
 cout << "Employee information obtained by get function: \n"
      << "\nFirst name is " << employee.getFirstName()
      << "\nLast name is " << employee.getLastName()
      << "\nSocial security number is " << employee.getSocialSecurityNumber()
      << "\nGross sales is " << employee.getGrossSales()
      << "\nCommission rate is " << employee.getCommissionRate()
      << "\nBase salary is " << employee.getBaseSalary() << endl;
 
 employee.setBaseSalary(1000); // установить зарплату
 
 cout << "\nUpdated employee information "
      << "output by print function: \n" << endl;
 employee.print(); // вывести информацию о служащем
 
 // вывести зароботок служащего
 cout << "\n\nEmployee's earnings: $" << employee.earnings() << endl;
 
 system("pause");
 return 0;
}
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
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream>
#include <cstdlib>
#include <iomanip>
#include "Unit2.h"
 
 
using namespace std;
 
BasePlusCommissionEmployee::BasePlusCommissionEmployee(const string &first,
    const string &last,const string &ssn,double sales,double rate,double salary)
 // явно вызвать конструктор базового класса CommissionEmployee
 : CommissionEmployee(first,last,ssn,sales,rate)
{
 setBaseSalary(salary); // проверить и сохранить зарплату
}
// установить зарплату
void BasePlusCommissionEmployee::setBaseSalary(double salary)
{
 baseSalary=(salary<0.0) ? 0.0 : salary;
}
 
// возвратить зарплату
double BasePlusCommissionEmployee::getBaseSalary() const
{
 return baseSalary;
}
// вычислить зароботок
double BasePlusCommissionEmployee::earnings() const
{
 // производному классу недоступны закрытые данные базового класса
 return baseSalary+(commissionRate*grossSales);
}
 
// напечатать объект CommissionEmployee
void BasePlusCommissionEmployee::print() const
{
 // производному классу недоступны закрытые данные базового класса
 cout << "base-salaried commission employee: " << firstName << ' ' << lastName
      << "\nsocial security number: " << socialSecurityNumber
      << "\ngross sales: " << grossSales << "\ncommission rate: "
      << commissionRate << "\nbase salary: " << baseSalary;
}
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
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream>
#include <cstdlib>
#include <iomanip>
#include "Unit3.h" // объявление CommissionEmployee
 
using namespace std;
 
#ifndef Unit2H
#define Unit2H
 
class BasePlusCommissionEmployee : public CommissionEmployee
{
 public:
  BasePlusCommissionEmployee(const string &,const string &,const string &,
                    double =0.0,double =0.0,double =0.0);
 
  void setBaseSalary(double); // установить основную зарплату
  double getBaseSalary() const; // возвратить основную зарплату
 
  double earnings() const; // вычислить зароботок
  void print() const; // напечатать объект CommissionEmployee
 private:
  double baseSalary; // основная зарплата
};
//---------------------------------------------------------------------------
#endif
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream>
#include <cstdlib>
#include <iomanip>
#include "Unit3.h"
 
using namespace std;
 
CommissionEmployee::CommissionEmployee(const string &first,const string &last,
                                     const string &ssn,double sales,double rate)
{
 firstName=first; // должно проверяться
 lastName=last; // должно проверяться
 socialSecurityNumber=ssn; // должно проверяться
 setGrossSales(sales); // проверить и сохранить объем продаж
 setCommissionRate(rate); // проверить и сохранить процент
}
 
// установить имя
void CommissionEmployee::setFirstName(const string &first)
{
 firstName=first; // должно проверяться
}
 
// возвратить имя
string CommissionEmployee::getFirstName() const
{
 return firstName;
}
 
// установить фамилию
void CommissionEmployee::setLastName(const string &last)
{
 lastName=last; // должно проверяться
}
 
// возвратить фамилию
string CommissionEmployee::getLastName() const
{
 return lastName;
}
 
// установить номер страховки
void CommissionEmployee::setSocialSecurityNumber(const string &ssn)
{
 socialSecurityNumber=ssn; // должно проверяться
}
 
// возвратить номер страховки
string CommissionEmployee::getSocialSecurityNumber() const
{
 return socialSecurityNumber;
}
 
// установить общую сумму продаж
void CommissionEmployee::setGrossSales(double sales)
{
 grossSales = (sales<0.0) ? 0.0 : sales;
}
 
// возвратить общую сумму продаж
double CommissionEmployee::getGrossSales() const
{
 return grossSales;
}
 
// установить комиссионный процент
void CommissionEmployee::setCommissionRate(double rate)
{
 commissionRate = (rate>0.0&&rate<1.0) ? rate : 0.0;
}
 
// возвратить комиссионный процент
double CommissionEmployee::getCommissionRate() const
{
 return commissionRate;
}
 
// вычислить зароботок
double CommissionEmployee::earnings() const
{
 return commissionRate*grossSales;
}
 
// напечатать объект CommissionEmployee
void CommissionEmployee::print() const
{
 cout << "commission employee: " << firstName << ' ' << lastName
      << "\nsocial security number: " << socialSecurityNumber
      << "\ngross sales: " << grossSales << "\ncommission rate: "
      << commissionRate;
}
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
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream>
#include <cstdlib>
#include <iomanip>
 
using namespace std;
 
#ifndef Unit3H
#define Unit3H
 
class CommissionEmployee
{
 public:
  CommissionEmployee(const string &,const string &,const string &,
                    double =0.0,double =0.0);
  void setFirstName(const string &); // установить имя
  string getFirstName() const; // возвратить имя
 
  void setLastName(const string &); // установить фамилию
  string getLastName() const; // возвратить фамилию
 
  void setSocialSecurityNumber(const string &); // установить SSN
  string getSocialSecurityNumber() const; // возвратить SSN
 
  void setGrossSales(double); // установить общую сумму продаж
  double getGrossSales() const; // возвратить общую сумму продаж
 
  void setCommissionRate(double); // установить процент
  double getCommissionRate() const; // возвратить процент
 
  double earnings() const; // вычислить зароботок
  void print() const; // напечатать объект CommissionEmployee
 protected:
  string firstName;
  string lastName;
  string socialSecurityNumber;
  double grossSales; // продажи за неделю
  double commissionRate; // комиссионный процент
};
//---------------------------------------------------------------------------
#endif
Ошибки -
1) [Linker Error] Unresolved external 'CommissionEmployee::CommissionEmployee(const _STL::basic_string<char, _STL::char_traits<char>, _STL::allocator<char> >&, const _STL::basic_string<char, _STL::char_traits<char>, _STL::allocator<char> >&, const _STL::basic_string<char, _STL::char_traits<char>, _STL::allocator<char> >&, double, double)' referenced from C:\USERS\SYSTEM16V\DESKTOP\UNIT2.OBJ
2) [Linker Error] Unresolved external 'CommissionEmployee::getCommissionRate() const' referenced from C:\USERS\SYSTEM16V\DESKTOP\UNIT1.OBJ
3)[Linker Error] Unresolved external 'CommissionEmployee::getGrossSales() const' referenced from C:\USERS\SYSTEM16V\DESKTOP\UNIT1.OBJ
4)[Linker Error] Unresolved external 'CommissionEmployee::getSocialSecurityNumber() const' referenced from C:\USERS\SYSTEM16V\DESKTOP\UNIT1.OBJ
5)[Linker Error] Unresolved external 'CommissionEmployee::getLastName() const' referenced from C:\USERS\SYSTEM16V\DESKTOP\UNIT1.OBJ
6)[Linker Error] Unresolved external 'CommissionEmployee::getFirstName() const' referenced from C:\USERS\SYSTEM16V\DESKTOP\UNIT1.OBJ

еще интересно,главное получается что он видит set-функции,но не видит get-функции, что за ерунда?Подскажите плиз.

Добавлено через 18 минут
Все решилось. Глюк какой-то не понятный, пересоздал проект - все запустилось. Чудной билдер...
0
SatanaXIII
Супер-модератор
Эксперт С++
5773 / 2772 / 376
Регистрация: 01.11.2011
Сообщений: 6,744
Завершенные тесты: 1
27.05.2015, 17:00 4
System16v, вы знаете, я собрал проект из ваших прям исходников, и все прекрасно работает. Никаких ошибок.
Попробуйте заново тоже его пересобрать.
0
System16v
3 / 3 / 1
Регистрация: 19.02.2014
Сообщений: 115
27.05.2015, 18:38 5
SatanaXIII, ага. Я потом ниже написал, что пересоздал проект и в новый проект скопировал весь код. И все запустилось. Из-за чего только билдер чудит не понятно
0
27.05.2015, 18:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.05.2015, 18:38

что за ошибка?[Linker Error] Unresolved external '_PortOut' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\UNIT1.OBJ
Unresolved external '_PortOut' referenced from C:\PROGRAM...

[Linker Error] Unresolved external 'f2(double)' referenced from D:\C++\4\UNIT1.OBJ-C++ Builder
что может означать эта ошибка: Unresolved external 'f2(double)' referenced...

[Linker Error] Unresolved external 'Sum(float)' referenced from D:\УЧЕБА\UNIT1.OBJ
что может означать эта ошибка Unresolved external 'Sum(float)' referenced...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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