Аватар для _Loader_
6 / 6 / 1
Регистрация: 18.04.2012
Сообщений: 92

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

25.10.2013, 09:15. Показов 2485. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru