Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
 Аватар для leo7755
3 / 3 / 1
Регистрация: 12.02.2017
Сообщений: 81

Ошибка C3861 logprintf: идентификатор не найден

14.08.2021, 14:37. Показов 2439. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.

Есть ф-ия в main.cpp, которая определена вот так:

C++
1
2
3
4
// main.cpp
typedef void(*logprintf_t)(char* format, ...);
 
logprintf_t logprintf;
Ниже в этом же main.cpp через #include подключён файл #include "string_mgs.cpp"

И собственно в чём вопрос) В string_mgs.cpp не видно этой ф-ии, чтобы её использовать. При сборке выдаёт:
Ошибка C3861 logprintf: идентификатор не найден

На всякий случай прикрепил скриншот сборки проекта.
Миниатюры
Ошибка C3861 logprintf: идентификатор не найден  
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.08.2021, 14:37
Ответы с готовыми решениями:

Ошибка C3861 идентификатор не найден
Здравствуйте, помогите пожалуйста решить проблему. Ругается на данную строку ArrayToMatrix2(A, K, M, N, B); #include <iostream> ...

Ошибка error C3861 идентификатор не найден
Делаю проект ATL Project В одном из методов хочу вызвать функцию, которая проверит дату. На вызове функции ошибка error C3861: getsec:...

Ошибка C3861 minor: идентификатор не найден
Ошибка C3861 minor: идентификатор не найден //определитель матрицы double det(int N, double **A) { double sum = 0; if (N...

7
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
14.08.2021, 14:43
Лучший ответ Сообщение было отмечено leo7755 как решение

Решение

leo7755,
У вас string_mgs.cpp будет компилироваться два раза.
Первый раз отдельно, как единица трансляции, потому что он добавлен в проект (на вашем скриншоте это видно слева, в дереве проекта)
Второй раз в составе единицы трансляции на основе main.cpp, потому что вы его еще подключили через #include.

Во второй раз идентификатор logprintf может быть виден в коде из string_mgs.cpp,
но в первый раз этот никак не возможно. Вот именно от первой компиляции вы и получаете эти ошибки.

Причина ошибки очевидна. Вы неправильно организовываете проект, вы НЕ должны подключать файлы cpp через #include, а чтобы делать доступными объявления в разных единицах трансляции нужно использовать заголовочные файлы.
2
 Аватар для leo7755
3 / 3 / 1
Регистрация: 12.02.2017
Сообщений: 81
14.08.2021, 16:06  [ТС]
Перенёс в main.h:
C++
1
2
3
typedef void(*logprintf_t)(char* format, ...);
 
logprintf_t logprintf;
main.cpp переделал вот так:
C++
1
2
3
4
5
6
7
8
9
10
#include "SDK/plugin.h"
 
#include "main.h"
 
#include "banlist.h"
#include "mode.h"
#include "mta.h"
#include "streamer.h"
#include "string_mgs.h"
#include "vehicles.h"
И всё равно та же ошибка. И если например подключить main.h в string_mgs.cpp, то уже другая ошибка от линковщика:

Ошибка LNK2005 "void (__cdecl* logprintf)(char *,...)" (?logprintf@@3P6AXPADZZA) уже определен в main.obj mgs C:\Users\Diman777\documents\visual studio 2015\Projects\mgs\mgs\string_mgs.obj 1
Миниатюры
Ошибка C3861 logprintf: идентификатор не найден  
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
14.08.2021, 16:09
leo7755, во-первых ошибка не та же. Теперь у вас ошибка линкера.
Во-вторых, неправильно перенесли

C++
1
typedef void(*logprintf_t)(char* format, ...);
Это оставить в .h.

C++
1
logprintf_t logprintf;
Это переписать вот так:
C++
1
extern logprintf_t logprintf;
В main.cpp после #include добавить:
C++
1
logprintf_t logprintf;
1
 Аватар для leo7755
3 / 3 / 1
Регистрация: 12.02.2017
Сообщений: 81
14.08.2021, 16:37  [ТС]
DrOffset,

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
// main.h
#ifndef MAIN_H
#define MAIN_H
 
typedef void(*logprintf_t)(char* format, ...);
 
extern logprintf_t logprintf;
 
void **ppPluginData;
 
extern void *pAMXFunctions;
 
#endif // MAIN_H
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
// main.cpp
#include "SDK/plugin.h"
 
#include "main.h"
 
logprintf_t logprintf;
 
#include "banlist.h"
#include "mode.h"
#include "mta.h"
#include "streamer.h"
#include "string_mgs.h"
#include "vehicles.h"
На самом деле я до создания этой темы extern уже пробовал, но вы видите, что результата нет
Миниатюры
Ошибка C3861 logprintf: идентификатор не найден  
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
14.08.2021, 17:10
Цитата Сообщение от leo7755 Посмотреть сообщение
но вы видите, что результата нет
У вас #include "main.h" внутри string_mgs.cpp присутствует?
1
 Аватар для leo7755
3 / 3 / 1
Регистрация: 12.02.2017
Сообщений: 81
14.08.2021, 17:43  [ТС]
Нет
Подключил в файл string_mgs.cpp файл main.h и всё заработало. Спасибо DrOffset.
Кстати вы помогли мне настроить более менее проект. Объявил/определил некоторые ф-ии в нужных файлах. И теперь более менее это всё выглядит по человечески.
0
14.08.2021, 17:45

Не по теме:

leo7755, пожалуйста :)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.08.2021, 17:45
Помогаю со студенческими работами здесь

Ошибка C3861 start: идентификатор не найден
#include <iostream> #include <iomanip> #include "tree.h" #include <locale.h> using namespace std; void menu(int n) { ...

Ошибка компилятора C3861 isFibonacci: идентификатор не найден
#include<iostream> #include<stdio.h> int main() { int testedNumber,a,b; printf("Введите число!"); ...

Ошибка error C3861: erfc: идентификатор не найден
#include<iostream> #include<fstream> #include<math.h> using namespace std; int main() { ifstream file; ...

Ошибка компиляции Error C3861, идентификатор не найден
#include <cstdlib> #include <ctime> const int N = 3; const int M = 3; int main() { int array = {}; ...

В чем ошибка? error C3861: ReadFromFileAdoutCarOwner: идентификатор не найден
В чем ошибка?


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru