Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
7 / 7 / 1
Регистрация: 03.07.2013
Сообщений: 26

Ошибка подключения динамической библиотеки VS 2013

18.11.2013, 02:43. Показов 2262. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Делаю всё по руководству: http://msdn.microsoft.com/ru-R... 35636.aspx
В результате получаю:
Code
1
2
3
4
5
6
7
8
9
10
1>------ Сборка начата: проект: BubbleSortDll, Конфигурация: Debug Win32 ------
1>  stdafx.cpp
1>  BubbleSortDll.cpp
1>c:\users\w0lfdale\documents\visual studio 2013\projects\bubblesortdll\bubblesort\bubblesortdll.cpp(27): error C2491: BubbleSortDll::BubbleSortMethod::sort: определение dllimport функция не разрешено
2>------ Сборка начата: проект: DllUsage, Конфигурация: Debug Win32 ------
2>  stdafx.cpp
2>  DllUsage.cpp
2>  Создание кода...
2>LINK : fatal error LNK1104: не удается открыть файл "c:\users\w0lfdale\documents\visual studio 2013\Projects\BubbleSortDll\Debug\BubbleSortDll.lib"
========== Сборка: успешно: 0, с ошибками: 2, без изменений: 0, пропущено: 0 ==========
Как решить эту проблему? Странно то, что указываю файл .dll, а не удается открыть .lib. Я так понимаю, суть в этом.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.11.2013, 02:43
Ответы с готовыми решениями:

Вызов функции одной динамической библиотеки из другой динамической библиотеки
Добрый день! Помогите пожалуйста разобраться со следующим вопросом. Возможно ли из одной библиотеки передать параметры для...

Ошибка при подключении динамической библиотеки
Всем привет! Помогите пожалуйста разобраться со следующим: Установил библиотеку cURL, раскидав либы и длл файлы по нужным папкам....

Ошибка преобразования при сборке динамической библиотеки
При сборке программы с динамической библиотекой позднего связывания вылазит ошибка: Пробовал как-нибудь преобразовать к одному типу, но не...

7
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
18.11.2013, 02:50
Выложите сюда ваши исходники
Скорее всего у вас проблема в настройках проекта с библиотекой
0
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
18.11.2013, 02:58
Не совсем. При сборке dll у вас должно получится 2 файла: .dll и .lib. Я думаю проблема в этом:

C++
1
bubblesortdll.cpp(27): error C2491: BubbleSortDll::BubbleSortMethod::sort: определение dllimport функция не разрешено
из-за этого не собирается dll и поэтому следующий проэкт использующий dll не может с ней слинковатся.

Добавлено через 2 минуты
п.с. Покажите код.
0
7 / 7 / 1
Регистрация: 03.07.2013
Сообщений: 26
18.11.2013, 03:01  [ТС]
http://rghost.ru/download/priv... ortDll.zip

BubbleSortDll.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#ifdef BUBBLESORTDLL_EXPORTS
#define BUBBLESORTDLL_API __declspec(dllexport) 
#else
#define BUBBLESORTDLL_API __declspec(dllimport) 
#endif
 
namespace BubbleSortDll
{
    class BubbleSortMethod
    {
    public:
        template <typename T>
        static BUBBLESORTDLL_API int sort(T*, int);
    };
}
BubbleSortDll.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
// BubbleSort.cpp: определяет экспортированные функции для приложения DLL.
//
 
#include "stdafx.h"
#include "BubbleSortDll.h"
#include <stdexcept>
 
namespace BubbleSortDll
{
    template <typename T>
    int BubbleSortMethod::sort(T* x, int n)
    {
        T temp;
 
        for (int i = 0; i < n; i++){
            for (int j = 0; j < n - 1; j++){
                if (a[j] < a[i])
                {
                    temp = a[j];
                    a[j] = a[i];
                    a[i] = temp;
                }
            }
        }
 
        return 0;
    }
};
DllUsage.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// DllUsage.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include "BubbleSortDll.h"
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    int a[5] = {0, -1, 1, -2, 2};
    BubbleSortDll::BubbleSortMethod::sort(a, 5);
    for (int i = 0; i < 5; i++) cout << a[i] << " ";
    return 0;
}
0
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
18.11.2013, 03:09
Я вам скажу так. Вы поначалу разберитесь зачем нужны классы, а то у Вас получается класс с неймпейсом для 1 метода (или Вы джавист?). Потом выучите, что такое шаблоны. Когда разберетесь с этмм, возможно Вы уже не захочете экспорить 1 метод из dll. Еще хочете? Ну тогда читайте как специализировать шаблон.
0
7 / 7 / 1
Регистрация: 03.07.2013
Сообщений: 26
18.11.2013, 03:16  [ТС]
Да, я джавист, но не в этом дело. В чем дело - мне задали в универе написать dll с методом сортировки пузырьком и программу, которая эту самую dll использует. Нашел, как мне кажется, самый подходящий по условию задачи гайд. И в данном случае я не хочу вдаваться в детали, а просто хочу решить поставленную задачу.
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
18.11.2013, 03:23
добавьте первой строчкой в файл BubbleSort.cpp
C++
1
#define BUBBLESORTDLL_EXPORTS
либо в настройках компилятора для проекта BubleSort добавьте /DBUBBLESORTDLL_EXPORTS
но проще 1й вариант

Добавлено через 6 минут
только заметил, что у вас шаблон...

в С++ шаблоны должны быть полностью объявлены в заголовочном(*.h) файле
поместить их в dll у вас не выйдет, так как исполняемый код для шаблонов создается только при объявлении переменной/вызове функции
1
7 / 7 / 1
Регистрация: 03.07.2013
Сообщений: 26
18.11.2013, 03:41  [ТС]
Добавил в cpp - ошибка. Добавил в .h - помогло, dll построило. Но, DllUsage опять ищет .lib. В папке debug решения BubbleSortDll три файла - BubbleSortDll.dll, .ilc и .pdb.

Добавлено через 14 минут
Работает, спасибо, Cra3y. Но пришлось немного схитрить - построить .lib, сохранить его, перестроить dll, и скопировать lib в папку с dll.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.11.2013, 03:41
Помогаю со студенческими работами здесь

Ошибка при динамической привязке dll библиотеки Access violation at address 00000000. Read of address 00000000
Добрый день В моем коде я динамически привязал библиотеку dll к приложению. При нажатии кнопки на форме, которая должна вызвать...

Отладка динамической библиотеки
Скомпилировал я динамическую библиотеку, присоединил к проекту. Папка с исходниками библиотеки лежит в отдельной папке (не в папке проекта,...

Создание динамической библиотеки
есть makefile root_include_dir :=include root_source_dir:=src source_subdirs :=./cRand ./fft ./rs compile_flags :=-Wall -pipe ...

Подключение динамической библиотеки
Всем доброго времени суток. Передо-мной стоит задача подключения собственно написанной библиотеки. И дело в том что я понятие не имею как...

Сборка динамической библиотеки
Пытаюсь собрать динамическую библиотеку для использования её из питона. #include &lt;iostream&gt; #include &lt;string&gt; ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru