LINUX.ORG.RU

[C++][qt] error: ‘my_function_name’ was not declared in this scope

 ,


0

0

Есть статическая либа. В ней функция my_function_name() описана в файлe my_function.h и реализация в my_function.c. Компилится успешно.

Есть бинарник. Линкую с этой либой. Внутри бинарника подключаю my_function.h и вызывают my_function_name(). При компиляции получаю ошибку

‘my_function_name’ was not declared in this scope.

Такое ощущение, что он не подключает заголовочный файл с функцией my_function_name. Я пришел к этому выводу, когда удалил строку

#include "my_function.h"

Удалив ее, ошибка остается и ничего не меняется. Хотя my_function.h файл подключает (никаких ворнингов или ошибок не выдает), но почему-то не видит функцию, в нем описанную.

Кстати, «пиша» этот код в QtCreator, последний не подчеркивает

#include "my_function.h"
и выдает autocompletion для my_function_name(). Но при компиляции страдает.

WTF?

★★

Последнее исправление: bk_ (всего исправлений: 1)

Была подобная фигня, правда в кутекреаторе виндовом. Пришлось прописать прямой путь к заголовочному файлу.

Zhbert ★★★★★
()
Ответ на: комментарий от Zhbert

Нашел ошибку! Читал же гугловские рекомендации к оформлению кода!

Суть была в том, что в обоих проектах (статической либе и бинарнике) был файл version.h, и соответственно, в обоих qtcreator по умолчанию сделал

#ifndef VERSION_H
#define VERSION_H

#endif

Подключая version.h из статической либы, компилятор пропускает содержимое этого файла из-за уже объявленного VERSION_H в своем собственном файле в проекте бинарника.

bk_ ★★
() автор топика

#ifdef __cplusplus extern «C» ....

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.