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

Как сделать чтобы функция была видна из .cpp файла? - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.94
Intel~lect
 Аватар для Intel~lect
135 / 124 / 2
Регистрация: 03.07.2012
Сообщений: 355
21.08.2012, 09:02     Как сделать чтобы функция была видна из .cpp файла? #1
У меня есть 3 файла: main.cpp, 1.h, 1.cpp. Все делаю по книге, но получается так, что определение функции не видно из main().cpp

main.cpp
C++
1
2
3
4
5
6
7
8
#include "1.h"
 
int main()
{
   func1();  // Ошибка. Undefined reference to 'func1(void)'
 
   return 0;
}
1.h
C++
1
void func1();  // прототип функции
1.cpp
C++
1
2
3
4
5
#include "1.h"
void func1()     // определение функции
{
   //...
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.08.2012, 09:02     Как сделать чтобы функция была видна из .cpp файла?
Посмотрите здесь:

как сделать программно чтобы программа была постоянно на заднем плане C++
C++ как сделать так чтобы была возможность записывать и фамилию и имя,а то у меня только до пробела читает?
C++ Как сделать так, чтобы программа не компилилась, хотя синтаксически была бы правильной?
Как сделать так чтобы переменная в описании одной функции была доступна в описании другой? C++
C++ Как сделать так, чтобы функция rand() возвращала разные значения
C++ как сделать чтобы функция возвращала массив?
C++ Как сделать, чтобы функция считала с точностью до
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
21.08.2012, 09:17     Как сделать чтобы функция была видна из .cpp файла? #2
Intel~lect, попробуй в твой хедер подключать стандартные инклуды либо писать через #ifndef #define #endif
main.cpp
C++
1
2
3
4
5
6
7
#include "header.h"
 
int main()
{
    func();
    return 0;
}
header.h
C++
1
2
3
#include <iostream>
using namespace std;
void func();

header.cpp
C++
1
2
3
4
5
#include "header.h"
void func()
{
    cout<<"func called\n";
}


Проект и отработка ниже
Миниатюры
Как сделать чтобы функция была видна из .cpp файла?  
Вложения
Тип файла: rar Intellect_VS6.0_proj.rar (5.0 Кб, 6 просмотров)
KostyaKulakov
Заблокирован
21.08.2012, 09:19     Как сделать чтобы функция была видна из .cpp файла? #3
Хм у меня всё работает. проверь ты правильно расположил заголовочный фаил7
Изображения
 
KostyaKulakov
Заблокирован
21.08.2012, 09:20     Как сделать чтобы функция была видна из .cpp файла? #4
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Intel~lect, попробуй в твой хедер подключать стандартные инклуды либо писать через #ifndef #define #endif
main.cpp
C++
1
2
3
4
5
6
7
#include "header.h"
 
int main()
{
    func();
    return 0;
}
header.h
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
using namespace std;
 
header.cpp
[CPP]#include "header.h"
 
void func()
{
    cout<<"func called\n";
}
void func();[/CPP]
Проект и отработка ниже
тут нету переопределения. те #ifndef #define #endif не нужны.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
21.08.2012, 09:24     Как сделать чтобы функция была видна из .cpp файла? #5
main.cpp
C++
1
2
3
4
5
6
#include <header.h>
 
int main() {
    foo();
    return 0;
}
foo.cpp
C++
1
2
3
4
5
#include <header.h>
 
void foo() {
    std::cout << "I'm foo" << std::endl;
}
header.h
C++
1
2
3
4
5
6
7
#ifndef HEADER_H
#define HEADER_H
#endif
 
#include <iostream>
 
extern void foo();
Intel~lect
 Аватар для Intel~lect
135 / 124 / 2
Регистрация: 03.07.2012
Сообщений: 355
21.08.2012, 09:25  [ТС]     Как сделать чтобы функция была видна из .cpp файла? #6
-=ЮрА=-, KostyaKulakov Это у вас Visual Studio. А как правильно в CodeBlocks сделать?
-=ЮрА=-
Заблокирован
Автор FAQ
21.08.2012, 09:30     Как сделать чтобы функция была видна из .cpp файла? #7
Цитата Сообщение от Intel~lect Посмотреть сообщение
-=ЮрА=-, KostyaKulakov Это у вас Visual Studio. А как правильно в CodeBlocks сделать?
- выставь в опциях линковщика настройки компилятора VisualStudio и открой проект через dsw файл рабочей области и на компиляцию...
defer
秘密
 Аватар для defer
555 / 235 / 3
Регистрация: 29.11.2010
Сообщений: 783
21.08.2012, 09:33     Как сделать чтобы функция была видна из .cpp файла? #8
Цитата Сообщение от alkagolik Посмотреть сообщение
extern void foo();
тут extern не нужен
Code-Blocks
-=ЮрА=-
21.08.2012, 09:36
  #9

Не по теме:

Intel~lect, вобщем если не выйдет напиши вечером, буду дома и нарежу скринами как откомпилировать в CodeBlocks в данный момент под рукой кроме 6-ки и 4-го BorlandC у меня ничего нет

Intel~lect
 Аватар для Intel~lect
135 / 124 / 2
Регистрация: 03.07.2012
Сообщений: 355
21.08.2012, 10:09  [ТС]     Как сделать чтобы функция была видна из .cpp файла? #10
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Не по теме:
Intel~lect, вобщем если не выйдет напиши вечером, буду дома и нарежу скринами как откомпилировать в CodeBlocks в данный момент под рукой кроме 6-ки и 4-го BorlandC у меня ничего нет
Спасибо большое. Если ничего не получится то тогда напишу

Добавлено через 28 минут
Сейчас попробовал тоже самое в Visual Studio сделать и все получилось. А вот в CodeBlocks так ничего не выходит.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
21.08.2012, 10:11     Как сделать чтобы функция была видна из .cpp файла? #11
Цитата Сообщение от Intel~lect Посмотреть сообщение
А вот в CodeBlocks так ничего не выходит
кто куда не выходит? что говорит?
Dekio
Фрилансер
Эксперт C++
 Аватар для Dekio
5817 / 1215 / 214
Регистрация: 23.11.2010
Сообщений: 3,378
Записей в блоге: 1
21.08.2012, 10:12     Как сделать чтобы функция была видна из .cpp файла? #12
Цитата Сообщение от alkagolik Посмотреть сообщение
#include <header.h>
Если файл лежит не в системных директориях, то подключать надо "header.h"
Intel~lect
 Аватар для Intel~lect
135 / 124 / 2
Регистрация: 03.07.2012
Сообщений: 355
21.08.2012, 10:16  [ТС]     Как сделать чтобы функция была видна из .cpp файла? #13
Цитата Сообщение от alkagolik Посмотреть сообщение
кто куда не выходит? что говорит?
Та же самая ошибка.
-2\main.cpp|9|undefined reference to `func1()'|
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
21.08.2012, 10:21     Как сделать чтобы функция была видна из .cpp файла? #14
Dekio, ага в браузере просто набирал.

Добавлено через 4 минуты
Intel~lect, а компилируешь ты наверное те же три файла из первого поста? посмотри в опциях компилятора в поле линкер что написано, должно быть g++.
Intel~lect
 Аватар для Intel~lect
135 / 124 / 2
Регистрация: 03.07.2012
Сообщений: 355
21.08.2012, 10:48  [ТС]     Как сделать чтобы функция была видна из .cpp файла? #15
alkagolik, Пожалуйста напиши где все эти опции найти. Где должно быть написано g++? Я в нем очень плохо разбираюсь.
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
21.08.2012, 11:06     Как сделать чтобы функция была видна из .cpp файла? #16
ребята, я не пойму, что вы все про линкер беседуете, если ошибку компилятор выдает?
интел-лект, попробуй "спрятать" куда-нибудь файл 1.h (переименуй, например). изменится ли сообщение об ошибке?
если нет - замени
C++
1
#include "1.h"
на
C++
1
void func1();
и посмотри, станет ли все хорошо. доложи результат.
Intel~lect
 Аватар для Intel~lect
135 / 124 / 2
Регистрация: 03.07.2012
Сообщений: 355
21.08.2012, 11:50  [ТС]     Как сделать чтобы функция была видна из .cpp файла? #17
novi4ok, Я сначала переименовал 1.h в 11.h. Так получается две ошибки
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <windows.h>
#include "1.h"              // \main\main.cpp|3|error: 1.h: No such file or directory|
using namespace std;
 
 
int main()
{
    func1();   \main\main.cpp|10|error: 'func1' was not declared in this scope|
 
    system("pause");
    return 0;
}
А когда строчку
C++
1
#include "1.h"
заменил на
C++
1
void func1();
, то осталась одна ошибка:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <windows.h>
void func1();
using namespace std;
 
int main()
{
    func1();   // \main\main.cpp|9|undefined reference to `func1()'|
 
    system("pause");
    return 0;
}
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
21.08.2012, 11:57     Как сделать чтобы функция была видна из .cpp файла? #18
Цитата Сообщение от Intel~lect Посмотреть сообщение
когда строчку
C++
1
#include "1.h"
заменил на
C++
1
void func1();
, то осталась одна ошибка:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <windows.h>
void func1();
using namespace std;
 
int main()
{
    func1();   // \main\main.cpp|9|undefined reference to `func1()'|
 
    system("pause");
    return 0;
}
значит, ребята правы, и это у тебя - сообщение линкера. он почему-то не знает, где искать эту функцию. как ему об этом сообщить - без понятия. попробуй найти где-нибудь документацию, там - параметры этого линкера, как ему указать, что в сборку нужно включить модуль с этой ф-ей (1.obj обычно), или директорию указать, где ссылки разрешать, или ...
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
21.08.2012, 18:46     Как сделать чтобы функция была видна из .cpp файла? #19
1. settings->compiler and debugger->global compiler settings->toolchain executables
поле linker for dynamic libs должно содержать "g++"
2. Проект должен быть создан как проект с++
3. Все компилируемые файлы и все заголовочные файлы должны быть добавлены в проект
Миниатюры
Как сделать чтобы функция была видна из .cpp файла?  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.08.2012, 19:34     Как сделать чтобы функция была видна из .cpp файла?
Еще ссылки по теме:

Как сделать так чтобы при каждом выделении памяти в методе была возможность ее очистить и вернуть результат? C++
C++ Программа работает только с одним разрешением экрана, как сделать чтобы она была универсальна
Экземпляр в хедере. Обьект в меин. Функция в cpp модифицирует поле обьекта. Как сделать? C++
C++ Добиться, чтобы была ошибка открытия файла (файловый ввод/вывод)
C++ Как сделать, чтобы параллельно с функцией main работала другая функция?

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

Или воспользуйтесь поиском по форуму:
Intel~lect
 Аватар для Intel~lect
135 / 124 / 2
Регистрация: 03.07.2012
Сообщений: 355
21.08.2012, 19:34  [ТС]     Как сделать чтобы функция была видна из .cpp файла? #20
alkagolik, Спасибо! Все таки получилось сделать эту программу.

Не по теме:

Целый день ушел на нее

Yandex
Объявления
21.08.2012, 19:34     Как сделать чтобы функция была видна из .cpp файла?
Закрытая тема Создать тему
Опции темы

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