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

Подключение cpp файла

25.10.2013, 09:15. Показов 2476. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Хочу подключить файл Evidence.cpp в проект.

Пишу в main.cpp:
#include"Evidence.cpp"


Вот такая ошибка как быть?
[ILINK32 Error] Error: Unable to open file 'EVIDENCE.DFM'
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.10.2013, 09:15
Ответы с готовыми решениями:

Подключение .h и .cpp файлов к проекту
Я запутался в элементарном. Но всё по порядку. Создал проект. Автоматически был создан файл Unit1.cpp. Я добавил два файла dat.h и...

Подключение файла справки
подскажите девочке как подключить файл справки расширения *.chm, справка сделана в WINCHM

Подключение ini файла
Как подключить файл ini для игр созданных на C++ builder???

17
4 / 4 / 2
Регистрация: 18.07.2013
Сообщений: 45
25.10.2013, 09:32
Evidence.cpp работает с Формами, форма храниться в файле EVIDENCE.DFM, а его судя по всему нет. И подключать лучше .h
0
 Аватар для _Loader_
6 / 6 / 1
Регистрация: 18.04.2012
Сообщений: 92
25.10.2013, 09:33  [ТС]
Как отвязать файл cpp от файла формы?
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
25.10.2013, 09:35
Цитата Сообщение от _Loader_ Посмотреть сообщение
Как отвязать файл cpp от файла формы?
для начала закомментировать такие строки:__
C++
1
2
#pragma resource "*.dfm"
TForm1 *Form1;
(но это все равно ничего кроме ошибок не даст; переписывать надо заново...).
1
 Аватар для _Loader_
6 / 6 / 1
Регистрация: 18.04.2012
Сообщений: 92
25.10.2013, 09:36  [ТС]
Спасибо уже нашел)
0
98 / 81 / 14
Регистрация: 26.07.2013
Сообщений: 594
25.10.2013, 09:46
- Что это за файл Evidence.cpp ? Он сделан Вами или чей-то сторонний ? И что он содержит ?
0
 Аватар для _Loader_
6 / 6 / 1
Регистрация: 18.04.2012
Сообщений: 92
25.10.2013, 09:49  [ТС]
Staut, это модуль.

Возможно вопрос не по теме, у меня в функции в файле Evidence.cpp

C++
1
2
3
4
void  __fastcall Evidence::Save ()
{
 
      Label1->Caption="asjfkj";
}

вызываю эту функцию в main и не работает в чем причина?
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
25.10.2013, 09:57
Возможно, не указан класс Evidence->Save();
0
4 / 4 / 2
Регистрация: 18.07.2013
Сообщений: 45
25.10.2013, 09:58
в Evidence.cpp напиши #include "основной_файл.h" и измени на Form1->Label1->Caption="asjfkj";
А лучше напиши ошибку какую выдает.
0
98 / 81 / 14
Регистрация: 26.07.2013
Сообщений: 594
25.10.2013, 13:08
- _Loader_, Насколько я понял по фрагментам, Evidence - это класс, в нем есть метод - Save().
Тогда подключать этот класс для использования его методов надо через заголовочный файл модуля,
где определен этот класс. Фу, сказал и утер пот ...
- А вообще-то трудно что-то понять лишь по отрывочным описаниям. Показали-бы хоть этот модуль,
где определен класс Evidence и то место, где используются его методы, например Save() .
Надеюсь там нет ничего секретного ...
0
 Аватар для _Loader_
6 / 6 / 1
Регистрация: 18.04.2012
Сообщений: 92
25.10.2013, 13:40  [ТС]
Итак, я пишу модуль для работы с изображениями а конкретно для поиска диагональных признаков.

Есть значит какая то форма например Form1, в ней main.cpp
Мой модель состоит из двух файлов Evidence.cpp и Evidence.h

В Evidence.cpp есть функции, но пока все закоменчены потому что появилась проблема как результат функции вывести на форму например в label1

Содержимое Evidence.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
class Evidence
{
    /*public:
    // Функция нахождения длины линии
    float __fastcall lenght_of_line(int x1,int y1, int x2, int y2);
 
   //Функция поворота
    void __fastcall povorot(IplImage* temp);
 
   //Функция копировая в Exel
    void __fastcall copy(TMemo *Memo1);
 
    //Функция предворительной обработки
    void __fastcall click();
 
   //Функция предворительной обработки при открытии
    void __fastcall fun_obr();
 
    //Функция расчета признаков
    void __fastcall Calculation ();
   */
    //Функция сохранения изображения
    void __fastcall Save ();
};
Содержимое Evidence.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
....
void  __fastcall Evidence::Save ()
{
 
      Label1->Caption = "kjdfknfdjb";
 
   /*   if(SavePictureDialog1->Execute())
    {
        Image2->Picture->SaveToFile(SavePictureDialog1->FileName+".png");
    }*/
}
...
Вот так вызываю в main.cpp

C++
1
void  __fastcall Evidence::Save ();

Подскажите как быть, может функция должна иметь возвращаемое значение?
0
 Аватар для Kulgar
511 / 196 / 26
Регистрация: 07.08.2013
Сообщений: 814
25.10.2013, 14:08
Цитата Сообщение от _Loader_ Посмотреть сообщение
Подскажите как быть, может функция должна иметь возвращаемое значение?
Ошибка всё та же?

Есть стандартный способ подключения файлов к проекту: меню Project->Add to Project... - необходимые инклуды прописываются автоматически.
0
98 / 81 / 14
Регистрация: 26.07.2013
Сообщений: 594
25.10.2013, 16:55
- _Loader_, в основном файле main.cpp надо вверху, где включаются остальные заголовочные файлы
включить хедер модуля Evidence. Т.е. прописать:
C++
1
#include  "Evidence.h"  // .........
Надо создать где-то в основном модуле экземпляр класса Evidence. Например так:
C++
1
2
3
4
  // простите не знаю какие параметры у конструктора Вашего класса Evidence.
  // Надо, чтобы они совпадали с параметрами в следующей строке.
  // я в Вашем классе Evidence конструктора вообще не увидел. Может Вы просто не дописали из краткости ...
  Evidence*  ev = new  Evidence();
- Теперь можно в основном файле вызывать открытые методы класса Evidence:
C++
1
2
  // сохранение классом Evidence.
  ev->Save();
Добавлено через 3 минуты
- Кстати, метод Save() определен в Вашем классе как закрытый (private и вызываться НЕ БУДЕТ !
Надо было, чтобы перед его объявлением в классе Evidence стояло public:
1
 Аватар для _Loader_
6 / 6 / 1
Регистрация: 18.04.2012
Сообщений: 92
30.10.2013, 12:01  [ТС]
Staut, спасибо, а как мне вывести результат работы функции на форму например в лабел2?
Прощу прощения за вопрос я сделал)
0
 Аватар для Kulgar
511 / 196 / 26
Регистрация: 07.08.2013
Сообщений: 814
30.10.2013, 12:04
Цитата Сообщение от _Loader_ Посмотреть сообщение
Staut, спасибо, а как мне вывести результат работы функции на форму например в лабел2?
На которой форме находится Label2? Из какого *.cpp файла нужен вывод?
1
98 / 81 / 14
Регистрация: 26.07.2013
Сообщений: 594
30.10.2013, 14:31
- Правильные вопросы задает Kulgar ...
Если у Вас и функция и Label2 находятся в одном модуле, то никаких проблем:
C++
1
2
3
4
5
6
7
8
9
  int  a = 3;
  // .........
  Label2->Caption = IntToStr( a );
  // или ...
  float  f = 5.25;
  Label2->Caption = FloatToStr( f )
  // или ...
  AnsiString  str = "Пример";
  Label2->Caption = str;
- Если функция определена в одном модуле (классе), а Label2 в другом, то могут возникнуть проблемы
с передачей результатов работы функции. Вариантов может быть очень много. Какой наиболее приемлем
в Вашем случае, надо смотреть конкретно по Вашему проекту.
0
 Аватар для _Loader_
6 / 6 / 1
Регистрация: 18.04.2012
Сообщений: 92
30.10.2013, 22:22  [ТС]
Вот такой вопрос;

В хедере Evidence.h есть вот что:

C++
1
2
3
4
5
6
7
8
9
10
11
// Клас "Признаки"
class Evidence
{ 
    public:
   //Функция предворительной обработки при открытии
    void __fastcall fun_obr();
 
     public:
    //Функция сохранения изображения
    int  __fastcall Evidence::Save ();
};
Вот void __fastcall fun_obr(); в Evidence.cpp

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
void __fastcall Evidence::fun_obr()
{
    //Image2->Picture->Bitmap = NULL;
    if(OpenDialog1->Execute())
    {
        image=cvLoadImage(AnsiString(Form1->OpenDialog1->FileName).c_str());
        scaled = cvCreateImage(cvSize(320, 240), image->depth, image->nChannels);
        cvResize(image, scaled, CV_INTER_LINEAR);
 
        gray = cvCreateImage(cvGetSize(scaled), IPL_DEPTH_8U, 1);
        cvCvtColor(scaled, gray, CV_BGR2GRAY);
 
        smooth = cvCreateImage(cvGetSize(gray), IPL_DEPTH_8U, 1);
        cvSmooth(gray, smooth, CV_GAUSSIAN, 5);
 
        bin = cvCreateImage(cvGetSize(smooth), IPL_DEPTH_8U, 1);
        cvThreshold(smooth, bin, 0, 255, CV_THRESH_OTSU);
 
        temp = cvCloneImage(bin);
        contour = cvCreateImage(cvGetSize(temp), IPL_DEPTH_8U, 1);
 
                 //TUImage::DrawImage(Form1->Image2, bin); // вот это должно вывестись
 
    }
}
Вопрос вот в чем, мне надо мне надо что бы при вызове функции в main.cpp она вывела //TUImage:rawImage(Form1.... изображение на форму, подскажите как это сделать, и можно ли вобще ее переделать? и как заставить увидеть например опендиалог тут ?
0
98 / 81 / 14
Регистрация: 26.07.2013
Сообщений: 594
31.10.2013, 12:26
- Если я правильно понял Ваши вопросы, то их два:
I - Как использовать OpenDialog в методе fun_obr Вашего класса Evidence ?
Если у Вас в проекте OpenDialog "брошен" на Основную Форму как OpenDialog1, и Основная Форма
оформлена, как Form1 в модуле "Unit1", то для использования OpenDialog1 в методе fun_obr надо сделать
следующее:
1) - В файле реализации модуля "Evidence" (файл: Evidence.cpp ) вверху включить оператор
C++
1
#include  "Unit1.h"  // для раб. с Основной Формой Form1.
2) - Обращаться к OpenDialog следующим образом:
C++
1
2
3
4
  // .........
  Form1->OpenDialog1->Execute();  или ...
  // .........
  Form1->OpenDialog1->FileName;
II - Как обратиться к открытому методу fun_obr() класса Evidence в методах Основной Формы ?
Для этого надо:
1) - В файле реализации Основной Формы (файле: Unit1.cpp) вверху вставить оператор:
C++
1
#include    "Evidence.h"    // для раб. с классом - Evidence.    //(1.)
2) - (В заголовочном файле Основной Формы) в закрытой части определения класса Основной Формы вставить указатель:
C++
1
2
3
private:  // User declarations
  // указатель на экз. класса - Evidence.    //(2.)
  Evidence*  ev;
3) - Вверху заголовочного файла Основной Формы (выше объявления класса Основной Формы класса TForm1) поставить оператор:
C++
1
2
3
//##### ПРЕДВАРИТЕЛЬНЫЕ ОБЪЯВЛЕНИЯ. #####
class  Evidence;  // чтобы в классе Основной Формы знали, что Evidence - класс    //(3.)
                        // и не что другое.
4) - В каком-либо методе Основной Формы (например в ее конструкторе) создать экз. класса Evidence:
C++
1
2
  // создать экз. класса - Evidence.    //(4.)
  ev = new  Evidence();
5) - И наконец, использовать открытый метод класса Evidence:
C++
1
2
  // вызываем открытый метод класса Evidence    //(5.)
  ev->fun_obr();
- Да, еще, когда Вы оформляете свой класс (например Evidence) не ставьте квалификаторы private: и
public: перед каждой переменной или методом. Обычно их ставят всего по одному на класс, группируя все
открытые и закрытые переменные и методы по их доступу:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// .........
class  TAaaaa
{
private:
  // ВСЕ ЗАКРЫТЫЕ ПЕРЕМЕННЫЕ КЛАССА.
  // ВСЕ ЗАКРЫТЫЕ МЕТОДЫ КЛАССА.
 
public:
  // конструктор, один или несколько.
  TAaaaa( void );  // .........
 
  // ВСЕ ОТКРЫТЫЕ ПЕРЕМЕННЫЕ КЛАССА.
  // ВСЕ ОТКРЫТЫЕ МЕТОДЫ КЛАССА.
 
};
- Для полной ясности прикрепляю махонький проект, где проиллюстрировано все выше сказанное ...
Вложения
Тип файла: rar Vers_3.rar (21.7 Кб, 5 просмотров)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.10.2013, 12:26
Помогаю со студенческими работами здесь

Подключение файла chm
Пробовал подключить к кнопке вызов справки с помощью ShellExecute, но ничего не запускало и ошибок не выдавало. Как можно осуществить...

Подключение файла #include <name.cpp>
Здравствуйте. Скажите, если программа состоит из нескольких файлов, можно-ли подключать cpp - файлы, или подключать можно только хедеры? ...

Подключение заголовочного файла к нескольким CPP
Доброго времени суток! У меня проблема такого рода: есть base.h в котором имеется набор функций и есть 2 .cpp документа, которые используют...

Подключение файлов main.cpp some.cpp some.h
Всем привет, программа разделенна на три файла poly.cpp main.cpp poly.h Кто мог бы объяснить как происходит подключение этих файлов, и как...

Подключение cpp файла дает ошибку "std::array: слишком мало аргументов шаблон"
Хочу создать приложение clr(чтобы были формы в приложении). Получаю примерно такой код: #include &quot;MyForm.h&quot; #include...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru