Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 21.09.2010
Сообщений: 3
1

Консольное приложение и модули. В чём ошибка?

21.09.2010, 23:50. Показов 1200. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Такая ситуация:

Visual C++ 2008 Express Edition

Консольное приложение Win32

3 файла:

---------------------lib.h-------------------------
C++
1
2
3
4
5
6
7
8
9
#ifndef _LIB_H_
#define _LIB_H_
 
int f (int a, int b)
{
    return a+b;
}
 
#endif
--------------------------------------------------

-------------------def.cpp------------------------
C++
1
2
3
4
5
#include "lib.h"
 
/* бессмысленный файл, да, но он пуст для 
упрощения вопроса, суть в том, что пуст он, 
или полон, программа не компилируется */
--------------------------------------------------

------------------main.cpp------------------------
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include "lib.h"
 
using namespace std;
int main()
{
    cout<<f(1,2)<<endl;
    cin.get();
    cin.get();
    return 0;
}
--------------------------------------------------

Ошибка выдаётся такая:
fatal error LNK1169: обнаружен многократно определенный символ - один или более

В чём тут дело, проблема ли это Visual C++ 2008 Express Edition
или же я неправильно организовал файлы.
И в любом случае, что делать тут?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.09.2010, 23:50
Ответы с готовыми решениями:

Чем является консольное приложение в Linux?
Здравствуйте. Столкнувшись с этой проблемой , решил что нужно сначала понять, чем вообще являются приложения в Linux, какого расширения...

Консольное приложение Win32 - ошибка c0000005
Visual Studio 2010 express Программа http://rghost.ru/53607442 Исходник основного файла #include &quot;stdafx.h&quot; ...

Как открыть консольное приложение в .NET через другое консольное приложение .NET
Есть один вопрос. Как открыть консольное приложение .NET через другое консольное приложение .NET, чтобы при этом второе приложение...

3
2 / 2 / 0
Регистрация: 22.09.2010
Сообщений: 8
22.09.2010, 08:16 2
lib.h:
C++
1
2
3
4
#ifndef _LIB_H_
#define _LIB_H_
extern int f (int a, int b);
#endif
def.cpp
C++
1
2
3
4
5
6
#include <iostream>
#include "lib.h";
using namespace std;
int f(int a,int b){
    return a+b;
}
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include "lib.h"
 
 
using namespace std;
int main()
{
        cout<<f(1,2)<<endl;
        cin.get();
        cin.get();
        return 0;
}
1
0 / 0 / 0
Регистрация: 21.09.2010
Сообщений: 3
22.09.2010, 21:48  [ТС] 3
Вопрос на самом деле не в этом, я понимаю, что так как Вы предложили, можно написать и будет работать. Другое дело, что вопрос получится слишком длинный, и я вроде почти разобрался. В кратце, дело в том, что не работает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
int f(int,int);
typedef int (*pf) (int,int);
pf Arr[] = {f,f};
 
int main()
{
   return 0;
}
int f (int a, int b)
{
    return a+b;
}
но работает:

C++
1
2
3
4
5
6
7
8
9
10
11
12
int f (int a, int b)
{
    return a+b;
}
typedef int (*pf) (int,int);
pf Arr[] = {f,f};
 
 
int main()
{
   return 0;
}
В любом случае, спасибо за ответ.
0
0 / 0 / 0
Регистрация: 21.09.2010
Сообщений: 3
25.09.2010, 12:37  [ТС] 4
Дело было вообще с пространством имён
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.09.2010, 12:37
Помогаю со студенческими работами здесь

Консольное приложение для Attiny2313A, ошибка error LNK2019
Добрый день форумчане! Прошу помочь с консольным приложением. В целях самообучения задался целью, управлять светодиодом от ПК. В качестве...

При вводе точки вылетает ошибка. Консольное приложение
Здравствуйте! Есть обычная задачка, пользователь вводит значение(всего их 6 штук) значения в виде 23.543 С запятой все работает...

Создал первое консольное приложение. Выдает ошибка msvcp140.dll и кириллица слетает
Насколько я понимаю не хватает dll на пк где НЕ установлена VS2017 Вопрос как вложить эти файлы в исходник и почему кодировка не...

консольное приложение (при запуске приложение открывалось на весь экран)
Как сделать, чтобы при запуске приложение открывалось на весь экран?

Как переделать консольное приложение в приложение с GUI?
Есть приложение, работающее в консоли, захотелось сделать с графическим интерфейсом, уперся в непонимание) Объясните, как: а) заменить...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Неблокируемый стек в C++26: реализуем простой сборщик мусора
stackOverflow 02.03.2025
Многопоточные приложения требуют надежных и производительных структур данных, способных эффективно работать в условиях конкурентного доступа. Неблокируемые структуры данных представляют собой особый. . .
Шаблон REQ/REP в ZeroMQ: сверхбыстрый обмен сообщениями в C++ и Python
stackOverflow 02.03.2025
Построение высоконагруженных распределенных систем требует надежного и производительного механизма обмена сообщениями. ZeroMQ выделяется среди прочих решений своей невероятной скоростью работы и. . .
Нестандартные приемы работы с итераторами в C++
stackOverflow 02.03.2025
Итераторы - один из краеугольных камней C++, предоставляющий универсальный механизм обхода и манипуляции данными в контейнерах. Появившись как замена небезопасным указателям, они эволюционировали от. . .
Лексический анализ и регулярные выражения в C++26
stackOverflow 02.03.2025
Лексический анализ - ядро любого компилятора и инструмента обработки текста. Каждый программист сталкивается с задачами парсинга строк, обработки файлов конфигурации или анализа пользовательского. . .
Подробно о std::mdspan в C++23
stackOverflow 02.03.2025
Работа с многомерными массивами данных традиционно была одной из сложных задач в C++. Программистам приходилось создавать собственные абстракции или использовать сторонние библиотеки для эффективной. . .
Колмогоровская сложность в C++: Путь к совершенному коду
stackOverflow 02.03.2025
Абстрактная математическая теория Колмогорова стала мощным средством оценки и улучшения программного кода. Сложность алгоритма - не только в его вычислительной эффективности, но и в том, насколько. . .
Изменения в C# 14
stackOverflow 02.03.2025
Одно из самых значимых изменений в C# 14 - поддержка коллекционных выражений, которые позволяют создавать и инициализировать коллекции с помощью нового лаконичного синтаксиса. Это нововведение. . .
Разработка кроссплатформен­­­­ного мобильного приложения для iOS/Android на C++
bytestream 02.03.2025
C++ как язык программирования высокого уровня с прямым доступом к аппаратным ресурсам позволяет создавать приложения, работающие одинаково быстро как на iOS, так и на Android устройствах. Ни для кого. . .
Аутентификация/авторизация на Golang
bytestream 02.03.2025
Go предлагает множество возможностей для создания надежных систем аутентификации. Встроенные криптографические пакеты, высокая производительность и простота параллельной обработки запросов делают его. . .
Нововведения TypeScript 5.8
bytestream 02.03.2025
TypeScript 5. 8 приносит много возможностей и оптимизаций, которые существенно расширяют границы типобезопасного программирования на JavaScript. Эта версия включает ряд значительных улучшений в работе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru