38 / 38 / 12
Регистрация: 28.03.2013
Сообщений: 272
Записей в блоге: 2
1

DLL ошибка LNK2019

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

Author24 — интернет-сервис помощи студентам
Добрый день!

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

В чем проблема?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.07.2013, 11:18
Ответы с готовыми решениями:

Ошибка 2 error LNK2019, не пойму в чем ошибка
Выдает такую ошибку: Ошибка 2 error LNK2019: ссылка на неразрешенный внешний символ "int __cdecl...

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

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

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

8
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
26.07.2013, 11:20 2
Проблема в том , что у тебя изменины имена функций , делай dll с указанием - extern "C"
0
38 / 38 / 12
Регистрация: 28.03.2013
Сообщений: 272
Записей в блоге: 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);
    };
}
}
Вот так ?
0
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
26.07.2013, 11:36 4
Блин , извеняй не увидел что ты в dll клас запихиваешь , там вообще отдельная история с очень большим гемороем.Компилятор какой ? Если MSVS , то не чем не помогу.
0
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 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.
1
38 / 38 / 12
Регистрация: 28.03.2013
Сообщений: 272
Записей в блоге: 2
26.07.2013, 13:04  [ТС] 6
Цитата Сообщение от Убежденный Посмотреть сообщение
Ну а еще в свойствах Solution, в разделе
"Project Dependencies", установить зависимость exe от dll, чтобы сначала собиралась
dll, и только потом exe.
Что-то не найду где это..
0
38 / 38 / 12
Регистрация: 28.03.2013
Сообщений: 272
Записей в блоге: 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  

0
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
26.07.2013, 13:26 8
Переменную Path редактировать не нужно.
Просто exe и dll должны находиться в одной папке.
1
38 / 38 / 12
Регистрация: 28.03.2013
Сообщений: 272
Записей в блоге: 2
26.07.2013, 13:37  [ТС] 9
Цитата Сообщение от Убежденный Посмотреть сообщение
Просто exe и dll должны находиться в одной папке.
Спасибо большое!
0
26.07.2013, 13:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.07.2013, 13:37
Помогаю со студенческими работами здесь

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

ошибка LNK2019
доброго времени суток, у меня возникает какая-то непонятная ошибка в следующем коде: #include...

Ошибка LNK2019
Здравствуйте! При компиляции выдает ошибки, помогите пожалуйста растолковать, на вид код вроде бы...

Ошибка LNK2019
Не понимаю, как исправить ошибку линковщика. Head.cpp #include <iostream> #include <stdio.h>...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru