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

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

Восстановить пароль Регистрация
 
Trukhanov_VP
 Аватар для Trukhanov_VP
36 / 36 / 5
Регистрация: 28.03.2013
Сообщений: 278
Записей в блоге: 2
26.07.2013, 11:18     DLL ошибка LNK2019 #1
Добрый день!

Рассматриваю пример, Создание и использование 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
Посмотрите здесь:

Ошибка LNK2019 C++
Ошибка LNK2019 C++
Ошибка LNK2019 C++
Ошибка LNK2019 C++
Ошибка LNK2019 C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Игорь с++
 Аватар для Игорь с++
429 / 452 / 15
Регистрация: 26.01.2011
Сообщений: 2,029
26.07.2013, 11:20     DLL ошибка LNK2019 #2
Проблема в том , что у тебя изменины имена функций , делай dll с указанием - extern "C"
Trukhanov_VP
 Аватар для Trukhanov_VP
36 / 36 / 5
Регистрация: 28.03.2013
Сообщений: 278
Записей в блоге: 2
26.07.2013, 11:30  [ТС]     DLL ошибка LNK2019 #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);
    };
}
}
Вот так ?
Игорь с++
 Аватар для Игорь с++
429 / 452 / 15
Регистрация: 26.01.2011
Сообщений: 2,029
26.07.2013, 11:36     DLL ошибка LNK2019 #4
Блин , извеняй не увидел что ты в dll клас запихиваешь , там вообще отдельная история с очень большим гемороем.Компилятор какой ? Если MSVS , то не чем не помогу.
Убежденный
Системный программист
 Аватар для Убежденный
14172 / 6187 / 981
Регистрация: 02.05.2013
Сообщений: 10,295
Завершенные тесты: 1
26.07.2013, 12:03     DLL ошибка LNK2019 #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
 Аватар для Trukhanov_VP
36 / 36 / 5
Регистрация: 28.03.2013
Сообщений: 278
Записей в блоге: 2
26.07.2013, 13:04  [ТС]     DLL ошибка LNK2019 #6
Цитата Сообщение от Убежденный Посмотреть сообщение
Ну а еще в свойствах Solution, в разделе
"Project Dependencies", установить зависимость exe от dll, чтобы сначала собиралась
dll, и только потом exe.
Что-то не найду где это..
Trukhanov_VP
 Аватар для Trukhanov_VP
36 / 36 / 5
Регистрация: 28.03.2013
Сообщений: 278
Записей в блоге: 2
26.07.2013, 13:24  [ТС]     DLL ошибка LNK2019 #7
Большой + программа запускается, но только не находит DLL на ПК, хоть я и прописал путь к файлам


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

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

Убежденный
Системный программист
 Аватар для Убежденный
14172 / 6187 / 981
Регистрация: 02.05.2013
Сообщений: 10,295
Завершенные тесты: 1
26.07.2013, 13:26     DLL ошибка LNK2019 #8
Переменную Path редактировать не нужно.
Просто exe и dll должны находиться в одной папке.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2013, 13:37     DLL ошибка LNK2019
Еще ссылки по теме:

Ошибка LNK2019 C++
C++ Ошибка LNK2019
C++ Ошибка LNK2019

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

Или воспользуйтесь поиском по форуму:
Trukhanov_VP
 Аватар для Trukhanov_VP
36 / 36 / 5
Регистрация: 28.03.2013
Сообщений: 278
Записей в блоге: 2
26.07.2013, 13:37  [ТС]     DLL ошибка LNK2019 #9
Цитата Сообщение от Убежденный Посмотреть сообщение
Просто exe и dll должны находиться в одной папке.
Спасибо большое!
Yandex
Объявления
26.07.2013, 13:37     DLL ошибка LNK2019
Ответ Создать тему
Опции темы

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