Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
14 / 12 / 12
Регистрация: 23.12.2013
Сообщений: 84
1

Использование DLL c поддержкой /clr (ошибка линковки)

01.03.2015, 17:56. Показов 795. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Создаю библиотеку .dll. В свойствах нажимаю галочку поддержка /clr.
после пытаюсь использовать методы библиотеки в программе, выдает ошибку:
Код
2>  Создание кода...
2>MyExecRefsDll.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: static double __cdecl MathFuncs::MyMathFuncs::Divide(double,double)" (?Divide@MyMathFuncs@MathFuncs@@SANNN@Z) в функции _main
2>MyExecRefsDll.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: static double __cdecl MathFuncs::MyMathFuncs::Multiply(double,double)" (?Multiply@MyMathFuncs@MathFuncs@@SANNN@Z) в функции _main
2>MyExecRefsDll.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: static double __cdecl MathFuncs::MyMathFuncs::Subtract(double,double)" (?Subtract@MyMathFuncs@MathFuncs@@SANNN@Z) в функции _main
2>MyExecRefsDll.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: static double __cdecl MathFuncs::MyMathFuncs::Add(double,double)" (?Add@MyMathFuncs@MathFuncs@@SANNN@Z) в функции _main
2>C:\Users\Kirill\Desktop\1\MyExecRefsDll\Debug\MyExecRefsDll.exe : fatal error LNK1120: 4 неразрешенных внешних элементов
Вот код .dll (которая собирается успешно):
// MathFuncsDll.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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);
    };
}
// MathFuncsDll.cpp
// compile with: /EHsc /LD
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
#include "MathFuncsDll.h"
 
#include <stdexcept>
 
using namespace std;
 
namespace MathFuncs
{
    double MyMathFuncs::Add(double a, double b)
    {
        return a + b;
    }
 
    double MyMathFuncs::Subtract(double a, double b)
    {
        return a - b;
    }
 
    double MyMathFuncs::Multiply(double a, double b)
    {
        return a * b;
    }
 
    double MyMathFuncs::Divide(double a, double b)
    {
        if (b == 0)
        {
            throw new invalid_argument("b cannot be zero!");
        }
 
        return a / b;
    }
}
Таргет .dll. включена поддержка /clr. Всё строится успешно.
Но вот я пытаюсь использовать в другом(!!!) проекте:
// MyExecRefsDll.cpp
// compile with: /EHsc /link MathFuncsDll.lib

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
#include "MathFuncsDll.h"
 
using namespace std;
 
int main()
{
    double a = 7.4;
    int b = 99;
 
    cout << "a + b = " <<
        MathFuncs::MyMathFuncs::Add(a, b) << endl;
    cout << "a - b = " <<
        MathFuncs::MyMathFuncs::Subtract(a, b) << endl;
    cout << "a * b = " <<
        MathFuncs::MyMathFuncs::Multiply(a, b) << endl;
    cout << "a / b = " <<
        MathFuncs::MyMathFuncs::Divide(a, b) << endl;
 
    return 0;
}
И тут возникает ошибка, которая была выше. ЕСЛИ убрать поддержку /clr всё будет ХОРОШО. Но мне нужна она для другого проекта. Помогите разобраться.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.03.2015, 17:56
Ответы с готовыми решениями:

Ошибка приложения. APPCRASH в clr.dll
На различных ОС работает нормально, на Windows Server 2008 R2 SP1 есть следующая проблема -&gt; При...

Создать библиотеку DLL статистической линковки
C# Создать библиотеку DLL статистической линковки Скинте статистическую линковку библиотеки ...

CLR сборка и стороняя dll
Добрый день! Столкнулась с такой проблемой: у меня есть сборка, которая реализует...

Интеграция сторонней dll в MSSQL CLR
Добрый день, друзья! Хочу попросить помощи в данном вопросе Занимаюсь разработкой...

0
01.03.2015, 17:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.03.2015, 17:56
Помогаю со студенческими работами здесь

BEX clr.dll Код исключения: c0000409
Добрый день, У меня есть C#-приложение (VS2010, framework 4). На некоторых машинах при запуске...

Использование программы паписаной на C# без CLR.
Возможно как нибуть запустить программу написаную на C# на компьютере, где не установлен CLR?

Ошибка об отсутствии MSVCP140D.dll, ucrtbased.dll, CONCRT140D.dll, VCRUNTIME140D.dll
Добрый день, товарищи. Возникла проблема. Делаю программу с использованием openCV 3.1 на Visual...

Использование обычного когда и сторонних библиотек в проекте CLR
Хочу упростить работу по написанию с GUI и не писать всё на чистом WinAPI, для этого я выбрал CLR,...


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

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