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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Trukhanov_VP
36 / 36 / 5
Регистрация: 28.03.2013
Сообщений: 278
Записей в блоге: 2
#1

DLL ошибка LNK2019 - C++

26.07.2013, 11:18. Просмотров 399. Ответов 8
Метки нет (Все метки)

Добрый день!

Рассматриваю пример, Создание и использование Dll, на MSDN.

Делаю все, что требуется, создал dll, создал проект, указал нужные доп. пути к файлам, но приложение выдает ошибку:
1>MyExecRefcDll.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: static double __cdecl MathFuncs::MyMathFuncs:ivide(double,double)" (?Divide@MyMathFuncs@MathFuncs@@SANNN@Z) в функции _main
1>MyExecRefcDll.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: static double __cdecl MathFuncs::MyMathFuncs::Multiply(double,double)" (?Multiply@MyMathFuncs@MathFuncs@@SANNN@Z) в функции _main
1>MyExecRefcDll.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: static double __cdecl MathFuncs::MyMathFuncs::Subtract(double,double)" (?Subtract@MyMathFuncs@MathFuncs@@SANNN@Z) в функции _main
1>MyExecRefcDll.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: static double __cdecl MathFuncs::MyMathFuncs::Add(double,double)" (?Add@MyMathFuncs@MathFuncs@@SANNN@Z) в функции _main

В чем проблема?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.07.2013, 11:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос DLL ошибка LNK2019 (C++):

Ошибка 2 error LNK2019, не пойму в чем ошибка - C++
Выдает такую ошибку: Ошибка 2 error LNK2019: ссылка на неразрешенный внешний символ "int __cdecl game(void)" (?game@@YAHXZ) в функции....

Ошибка LNK2019 - C++
Пишу небольшую базу данных (в учебных целях поэтому нигде не сохраняю) и при добавлении всех функций и структур в библиотеку, при их...

Ошибка LNK2019 - C++
Здравствуйте! Скачал игру WarZ точнее исходники, и HackShield(Защита от читеров). Пытаюсь защиту встроить в игру, но потом у меня начали...

Ошибка LNK2019 - C++
Всех с наступающим. Бьюсь на единственной ошибкой линковщика в коде. Сама ошибка похоже в перегрузке оператора умножения в шаблонном...

Ошибка LNK2019 - C++
Я только знакомлюсь с c++. Помогите пожалуйста разобраться. Есть такой класс: #pragma once template <class Type> class CMyArray...

Ошибка LNK2019 - C++
#include <string> using namespace std; class Language { public: Language() {}; void Log(string t) {}; };

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Игорь с++
434 / 457 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
26.07.2013, 11:20 #2
Проблема в том , что у тебя изменины имена функций , делай dll с указанием - extern "C"
Trukhanov_VP
36 / 36 / 5
Регистрация: 28.03.2013
Сообщений: 278
Записей в блоге: 2
26.07.2013, 11:30  [ТС] #3
Цитата Сообщение от Игорь с++ Посмотреть сообщение
Проблема в том , что у тебя изменины имена функций , делай dll с указанием - extern "C"
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
extern "C"
{
 
    namespace MathFuncs
    {
        class MyMathFuncs
        {
            public:
                // Returns a + b
        static __declspec(dllexport) double Add(double a, double b);
 
        // Returns a - b
        static __declspec(dllexport) double Subtract(double a, double b);
 
        // Returns a * b
        static __declspec(dllexport) double Multiply(double a, double b);
 
        // Returns a / b
        // Throws DivideByZeroException if b is 0
        static __declspec(dllexport) double Divide(double a, double b);
    };
}
}
Вот так ?
Игорь с++
434 / 457 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
26.07.2013, 11:36 #4
Блин , извеняй не увидел что ты в dll клас запихиваешь , там вообще отдельная история с очень большим гемороем.Компилятор какой ? Если MSVS , то не чем не помогу.
Убежденный
Системный программист
Эксперт С++
15506 / 7004 / 1106
Регистрация: 02.05.2013
Сообщений: 11,440
Завершенные тесты: 1
26.07.2013, 12:03 #5
Пример из MSDN какой-то странный.
Вместо "Add Reference", что имеет смысл только для .NET-приложений,
нужно просто добавить в exe-проект ссылку на библиотеку импорта от dll.
То есть, в свойствах проекта exe, в разделе "Linker/General/Additional Library Directories"
прописать путь к папке, где лежит файл .lib, а сам файл .lib вписать в пункте
"Linker/Input/Additional Dependencies". Ну а еще в свойствах Solution, в разделе
"Project Dependencies", установить зависимость exe от dll, чтобы сначала собиралась
dll, и только потом exe.
Trukhanov_VP
36 / 36 / 5
Регистрация: 28.03.2013
Сообщений: 278
Записей в блоге: 2
26.07.2013, 13:04  [ТС] #6
Цитата Сообщение от Убежденный Посмотреть сообщение
Ну а еще в свойствах Solution, в разделе
"Project Dependencies", установить зависимость exe от dll, чтобы сначала собиралась
dll, и только потом exe.
Что-то не найду где это..
Trukhanov_VP
36 / 36 / 5
Регистрация: 28.03.2013
Сообщений: 278
Записей в блоге: 2
26.07.2013, 13:24  [ТС] #7
Большой + программа запускается, но только не находит DLL на ПК, хоть я и прописал путь к файлам


C++
1
2
// в коде *.cpp
#pragma comment(lib, "MyMathFuncsDll.lib")
Миниатюры
DLL ошибка LNK2019   DLL ошибка LNK2019   DLL ошибка LNK2019  

DLL ошибка LNK2019   DLL ошибка LNK2019   DLL ошибка LNK2019  

Убежденный
Системный программист
Эксперт С++
15506 / 7004 / 1106
Регистрация: 02.05.2013
Сообщений: 11,440
Завершенные тесты: 1
26.07.2013, 13:26 #8
Переменную Path редактировать не нужно.
Просто exe и dll должны находиться в одной папке.
Trukhanov_VP
36 / 36 / 5
Регистрация: 28.03.2013
Сообщений: 278
Записей в блоге: 2
26.07.2013, 13:37  [ТС] #9
Цитата Сообщение от Убежденный Посмотреть сообщение
Просто exe и dll должны находиться в одной папке.
Спасибо большое!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2013, 13:37
Привет! Вот еще темы с ответами:

LNK2019 ошибка - C++
Здравствуйте! Есть такая проблема, и уже долго не могу понять, в чём тут дело... При компиляции возникают ошибки в функция процессора,...

Ошибка LNK2019 - C++
Здравствуйте, уважаемые программисты! Обращаюсь к Вам потому, что в моей первой программе с классами вылетает ошибка линковки, а что с...

Ошибка LNK2019 - C++
Добрый день. Недавно начала изучать С++ (необходимо для научной деятельности). Программирую я в Visual Studio 2010 Express Напечатал я...

Ошибка LNK2019 - C++
Создается библиотека D:\EWIL\EWIL(Old)\EWIL\scr\map editor\Debug\Map Editor.lib и объект D:\EWIL\EWIL(Old)\EWIL\scr\map editor\Debug\Map...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
26.07.2013, 13:37
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru