Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.07.2015, 23:07   #1
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию Unresolved external

Здравствуйте господа Гуру С++ !
(вопрос по Билдеру 6)
Есть класс. Создал конструктор вот так в хидерфайле

Код:
class  THemicalConstructor
{
  :public
   THemicalConstructor(HWND handle3d, THemieConvertMode mode)
   {
     реализация
   };
}
Собирается и запускается

переношу реазиацию в файл CPP вот так
Код:
class  THemicalConstructor
{
....
  :public
     THemicalConstructor(HWND handle3d, THemieConvertMode mode);
...
}
------------------
hpp файл приношу извинения -  cpp файл
....
   THemicalConstructor::THemicalConstructor(HWND handle3d, THemieConvertMode mode)
   {
     реализация
   };
...
При попытке сборки пишет вот такую ахинею:

[Linker Error] Unresolved external 'THemicalConstructor::THemicalConst ructor(void *, THemieConvertMode)' referenced from E:\HemieV.5.2\HEMIEAS3D.OBJ

Вопрос - что оно хочет, чего ему не хватает?
95% сбоев и ошибок приложений, находится в полу метрах от монитора

Последний раз редактировалось JUDAS; 31.07.2015 в 11:51.
JUDAS вне форума Ответить с цитированием
Старый 30.07.2015, 23:45   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

cpp файл в проект добавили?
waleri вне форума Ответить с цитированием
Старый 31.07.2015, 00:35   #3
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Описывая класс нужно после него ставить ";":

class THemicalConstructor {...};

а после функций этого можно не делать:
Код:
THemicalConstructor(HWND handle3d, THemieConvertMode mode)
{
   реализация
}

Переносить в срр нужно так:

.h
Код:
class  THemicalConstructor
{
public:
   THemicalConstructor(HWND handle3d, THemieConvertMode mode);
};
.cpp
Код:
THemicalConstructor::THemicalConstructor(HWND handle3d, THemieConvertMode mode)
{
   реализация
}
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).

Последний раз редактировалось Krasiosoft; 31.07.2015 в 01:00.
Krasiosoft вне форума Ответить с цитированием
Старый 31.07.2015, 11:40   #4
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

Цитата:
Сообщение от Krasiosoft Посмотреть сообщение
Описывая класс нужно после него ставить ";":
...
Переносить в срр нужно так:
Не понял комментария. А у меня как ?

Цитата:
cpp файл в проект добавили?
walery. я конечно дятл в С++ но не до такой степени =)

---
+дополнил
говорят знакомые гуру что нужно что-то с чем то синхронизировать. Я конечно понимаю что означает слово "синхронизация" но не понимаю о чём идёт речь в контексте темы.

более подробно код выглядит вот так:

файл hemical.h
Код:
#ifndef  HEMICAL_H
#define  HEMICAL_H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <StdCtrls.hpp>
//---------------------------------------------------------------------------

class  THemicalConstructor
{
....
  :public
     THemicalConstructor(HWND handle3d, THemieConvertMode mode);
...
}
#endif
---------------------------
файл hemical.сpp

Код:
#include <vcl.h>
#include <math.h>
#include "hemical.h"

#pragma hdrstop
....
   THemicalConstructor::THemicalConstructor(HWND handle3d, THemieConvertMode mode)
   {
     реализация
   };
...
что ему нужно синхронизировать ?
95% сбоев и ошибок приложений, находится в полу метрах от монитора

Последний раз редактировалось JUDAS; 31.07.2015 в 11:49.
JUDAS вне форума Ответить с цитированием
Старый 31.07.2015, 11:51   #5
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,964
По умолчанию

Цитата:
Вопрос - что оно хочет, чего ему не хватает?
Unresolved external переводится, как неопределённый внешний. По всей видимости, cpp файл не видит заголовочного. Попробуйте в cpp файле прописать #include <название Вашего h-файла, где определена функция>.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 31.07.2015, 11:59   #6
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Unresolved external переводится, как неопределённый внешний. По всей видимости, cpp файл не видит заголовочного.
Угу, это ошибка линковщика а не компилятора, так что заголовочные файлы здесь не при делах.

Может в проекте есть два одинаковых cpp файла в разных папках?
waleri вне форума Ответить с цитированием
Старый 31.07.2015, 14:49   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Код:
class  THemicalConstructor
{
....
  :public
Это парсер форума так жует или у вас : перед пабликом?

Цитата:
Не понял комментария. А у меня как ?
Код:
class  THemicalConstructor
{
....
  :public
     THemicalConstructor(HWND handle3d, THemieConvertMode mode);
...
}
#endif

Последний раз редактировалось p51x; 31.07.2015 в 14:52.
p51x на форуме Ответить с цитированием
Старый 31.07.2015, 15:56   #8
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Это парсер форума так жует или у вас : перед пабликом?
Там всё нормально, в противном случае дало бы ошибку синтаксиса. Это опечятка при набирании текста.


Цитата:
Код:
class  THemicalConstructor
{
....
  :public
     THemicalConstructor(HWND handle3d, THemieConvertMode mode);
...
}
#endif
не понял, а разве в С++ не всё равно есть ли точка с запятой после фигурной скобки или нет?
Предварительно спасибо за помощь, если проблема действительно в точке с запятой, попрошу Виталия Stilet добавить от меня + к репутации.

п.с. споймал бы автора си, отбил бы руки за создание этого языка и его порождений
95% сбоев и ошибок приложений, находится в полу метрах от монитора
JUDAS вне форума Ответить с цитированием
Старый 31.07.2015, 16:43   #9
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Если у вас нет ; в конце, то как вообще дело дошло до линковки?
waleri вне форума Ответить с цитированием
Старый 31.07.2015, 17:03   #10
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
п.с. споймал бы автора си, отбил бы руки за создание этого языка и его порождений
Можете начать с авторов паскаля и делфи за их end. и end;

Цитата:
Если у вас нет ; в конце, то как вообще дело дошло до линковки?
Ну формально инклуд же не компилит, а тупо вставляет. Могло где-то дальше найтись, но т.к. описание получилось такое, то и линкер не нашел тело.
p51x на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Unresolved external vladimir.kartashev C++ Builder 3 04.08.2017 20:27
Unresolved external __fastcall Silly Student C++ Builder 1 22.10.2011 21:55
Unresolved external Alex54 C++ Builder 0 15.03.2011 00:21
unresolved external symbol Эрин Общие вопросы C/C++ 3 22.03.2010 15:32
unresolved external symbol... LukS Общие вопросы C/C++ 2 16.04.2009 11:41