2015-09-15 3 views
1

Я знаю, что это должен быть глупый вопрос, но я не могу решить эту проблему в течение 5 часов, и это убивает меня: я изучаю C++ и делаю все, как мне сказали , но я не могу построить свою функцию, потому что компилятор просто не узнал мою функцию. Я попытался использовать абсолютно простой, но проблема остается. Я использую Code Blocks. Main.cpp, ezmukszik.cpp и ezmukszik.h находятся в одной и той же библиотеке проектов, и я проверил в настройках/Компилятор/Параметры сборки, чтобы явно добавить рабочий каталог в поисковые системы компилятора. Сообщение об ошибке является следующее:undefined ссылка на самописную функцию

in function main 
/in line 8/ undefined reference to 'ezmukszik()' 

Заголовок:

#ifndef EZMUKSZIK_H_INCLUDED 
#define EZMUKSZIK_H_INCLUDED 

#include <iostream> 

int ezmukszik(); 

#endif // EZMUKSZIK_H_INCLUDED 

Исходный код:

#include <iostream> 

using namespace std; 

int ezmukszik() 
{ 
    std::cout << "Hello world!" << std::endl; 
    return 0; 
} 

И главное:

#include <iostream> 
#include "D:\BME suli\C++\Programok\ezmukszik\ezmukszik.h" 

using namespace std; 

int main() 
{ 
    ezmukszik(); 
    return 0; 
} 

Любая помощь будет очень ценим!

+0

Убедитесь, что «ezmukszik.cpp» находится под «источниками», а не «заголовками». Похоже, что это каким-то образом не передается компоновщику. –

+3

обратная косая черта в файле include является символом escape. Прямая косая черта/должна работать так же, как \\ –

+0

К сожалению, она находится под источниками. – MercurySnail

ответ

0

Наконец-то мне удалось решить проблему, это было раздражающее решение: я добавил исходный файл в блоках кода из окна нового файла, и он был отображен в источниках проекта, но по какой-то причине он все еще не скомпилирован. Добавление его с помощью правого щелчка в правом окне разрешило проблему. :) Спасибо всем за вашу помощь!

1

Ошибка является ошибкой LINKER и означает, что ваш файл ezmukszik.cpp не связан вместе с main.o после компиляции с ezmukszik.o.

Проверьте ссылочную командную строку.

+0

Прошу прощения за то, что ты такой нуб, но не мог бы ты рассказать мне, как мне это сделать? – MercurySnail

+0

Простейшим способом является попытка связать ваше приложение с командной строкой, например. 'g ++ -o myapp main.cpp ezmukszik.cpp'.Если это работает правильно, откройте настройки проекта CodeBlocks и найдите настройки Linker. CodeBlocks wiki имеет целую страницу для диагностики таких ошибок: http://wiki.codeblocks.org/index.php?title=FAQ-Compiling_(errors) – berkus

+0

В нем говорится, что он не распознает g ++ как команду или программу (у меня есть Windows 7 64), должен ли я загрузить его отдельно от Code Blocks? – MercurySnail

Смежные вопросы