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

Ссылка на неразрешенный внешний символ в функции - C++

Восстановить пароль Регистрация
 
LiveDeath
0 / 0 / 0
Регистрация: 18.11.2015
Сообщений: 4
28.03.2016, 20:41     Ссылка на неразрешенный внешний символ в функции #1
Доброго времени суток, задача моя состояла в том, чтобы из ранее сделанной мной практической работы сделать проект с использованием DLL.
Попытавшись проштудировать теорию, что-то да вышло(100% корявое).
Т.к. я пока учусь, попытки разобрать проблему по ранее созданным темам на форуме у меня не вышло, прошу вашей помощи
Сами ошибки:
Кликните здесь для просмотра всего текста

Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка LNK2019 ссылка на неразрешенный внешний символ _GetTime в функции _main ConsoleApplication4 F:\VisualStudio1231231\СисПО\Лаб6\ConsoleApplication4\ConsoleApplication4\Main.obj 1
Ошибка LNK2019 ссылка на неразрешенный внешний символ _PutTime в функции _main ConsoleApplication4 F:\VisualStudio1231231\СисПО\Лаб6\ConsoleApplication4\ConsoleApplication4\Main.obj 1
Ошибка LNK2019 ссылка на неразрешенный внешний символ _AddTime в функции _main ConsoleApplication4 F:\VisualStudio1231231\СисПО\Лаб6\ConsoleApplication4\ConsoleApplication4\Main.obj 1
Ошибка LNK2019 ссылка на неразрешенный внешний символ _DiffTime в функции _main ConsoleApplication4 F:\VisualStudio1231231\СисПО\Лаб6\ConsoleApplication4\ConsoleApplication4\Main.obj 1
Ошибка LNK1120 неразрешенных внешних элементов: 4 ConsoleApplication4 F:\VisualStudio1231231\СисПО\Лаб6\ConsoleApplication4\Debug\ConsoleApplication4.exe 1

main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include "/VisualStudio1231231/СисПО/Лаб6/ConsoleApplication3/ConsoleApplication3/dll.h"
 
using namespace std;
 
void main()
{
    setlocale(LC_ALL, "Rus");
    cout << "Лабораторная работа №4. Вариант 2." << endl;
    Time t;
    GetTime(&t);
    Time t1;
    GetTime(&t1);
    cout << "Время 1: ";
    PutTime(t);
    cout << endl;
    cout << "Время 2: ";
    PutTime(t1);
    cout << endl;
    AddTime(&t, t1);
    cout << endl;
    int i = DiffTime(t, t1);
    cout << "Разница времен в секундах: " << abs(i) << endl;
    system("pause");
}
dll.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include "F:/VisualStudio1231231/СисПО/Лаб6/ConsoleApplication3/ConsoleApplication3/dll.h"
 
using namespace std;
 
extern "C" __declspec(dllexport) void GetTime(Time *t1)
{
    Time t;
    cout << "Введите время в формате чч:мм:сс ";
    cin >> t.h >> t.m >> t.s;
    *t1 = t;
}
 
extern "C" __declspec(dllexport) void PutTime(Time t)
{
    cout << "Вы ввели время: " << t.h << ":" << t.m << ":" << t.s << endl;
}
 
extern "C" __declspec(dllexport) void AddTime(Time *t, Time t1)
{
    Time t2;
    t2 = *t;
    t2.h += t1.h;
    t2.m += t1.m;
    t2.s += t1.s;
    if (t2.s > 60) {
        t2.s = t2.s - 60;
        t2.m = t2.m + 1;
    }
    if (t2.m > 60) {
        t2.m = t2.m - 60;
        t2.h = t2.h + 1;
    }
    if (t2.h > 24) {
        t2.h = t2.h - 24;
    }
    cout << "Сумма времен: " << t2.h << ":" << t2.m << ":" << t2.s;
    *t = t2;
}
 
extern "C" __declspec(dllexport) int DiffTime(Time t, Time t1)
{
    int s, s1;
    s = (t.h * 60) * 60 + t.m * 60 + t.s;
    s1 = (t1.h * 60) * 60 + t1.m * 60 + t1.s;
    return s - s1;
}
dll.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#ifndef dll
#define dll __declspec(dllimport)
#include <iostream>
struct Time
{
    unsigned int h; //часы
    unsigned int m; //минуты
    unsigned int s; //секунды
};
 
extern "C" __declspec(dllexport) void GetTime(Time *t);
extern "C" __declspec(dllexport) void PutTime(Time t);
extern "C" __declspec(dllexport) void AddTime(Time *t, Time t1);
extern "C" __declspec(dllexport) int DiffTime(Time t, Time t1);
#endif
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2016, 20:41     Ссылка на неразрешенный внешний символ в функции
Посмотрите здесь:

Ошибка линковщика(error LNK2019: ссылка на неразрешенный внешний символ _main в функции ___tmainCRTStartup) C++
Ошибка LNK2019: ссылка на неразрешенный внешний символ _main в функции ___tmainCRTStartup C++
C++ Ссылка на неразрешенный внешний символ _main в функции
Error LNK2019: ссылка на неразрешенный внешний символ _main в функции ___tmainCRTStartup C++
C++ Error LNK2019: ссылка на неразрешенный внешний символ _main в функции ___tmainCRTStartup
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nd2
1033 / 772 / 260
Регистрация: 29.01.2016
Сообщений: 2,413
28.03.2016, 21:28     Ссылка на неразрешенный внешний символ в функции #2
dll.lib подключи.
http://www.xserver.ru/computer/sredaprogr/msvc/2/
LiveDeath
0 / 0 / 0
Регистрация: 18.11.2015
Сообщений: 4
28.03.2016, 22:03  [ТС]     Ссылка на неразрешенный внешний символ в функции #3
Прошу прощения, но просмотрев информацию по Вашей ссылке, не нашел момента с подключением файла *.lib
nd2
1033 / 772 / 260
Регистрация: 29.01.2016
Сообщений: 2,413
28.03.2016, 22:09     Ссылка на неразрешенный внешний символ в функции #4
Там сказано об этом без описания процесса. Подключается так же, как и любая другая либа. В свойствах проекта, компоновщик, дополнительные каталоги библиотек - путь к ней; ввод - дополнительные зависимости - имя.
LiveDeath
0 / 0 / 0
Регистрация: 18.11.2015
Сообщений: 4
28.03.2016, 22:22  [ТС]     Ссылка на неразрешенный внешний символ в функции #5
Ага, нашел. Спасибо.
Только есть проблема, после сборки решения(dll.h и dll.cpp) не могу найти в папке с проектом dll.lib. Единственный файл с расширением .lib - ConsoleApplication3.lib в папке Debug.
Где я ошибся?
nd2
1033 / 772 / 260
Регистрация: 29.01.2016
Сообщений: 2,413
28.03.2016, 22:28     Ссылка на неразрешенный внешний символ в функции #6
Цитата Сообщение от LiveDeath Посмотреть сообщение
не могу найти в папке с проектом dll.lib.
Это я для примера написал, я же не знаю какие там у тебя имена. Имя должно быть такое же, как и у .dll (скорее всего, имя проекта, в котором dll собираешь).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.03.2016, 22:37     Ссылка на неразрешенный внешний символ в функции
Еще ссылки по теме:

C++ Ссылка на неразрешенный внешний символ _WinMain@16 в функции ___tmainCRTStartup
C++ Error LNK2019: ссылка на неразрешенный внешний символ _main в функции ___tmainCRTStartup MSVCRTD.lib
C++ Ошибка "ссылка на неразрешенный внешний символ _main в функции ___tmainCRTStartup"

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

Или воспользуйтесь поиском по форуму:
LiveDeath
0 / 0 / 0
Регистрация: 18.11.2015
Сообщений: 4
28.03.2016, 22:37  [ТС]     Ссылка на неразрешенный внешний символ в функции #7
Спасибо. Кажется понял в чем проблема
Yandex
Объявления
28.03.2016, 22:37     Ссылка на неразрешенный внешний символ в функции
Ответ Создать тему
Опции темы

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