Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с неявным подключением dll, Подключение dll 
:(
    Опции темы
Enrika
Дата 11.3.2018, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 11.3.2018

Репутация: нет
Всего: нет



Добрый вечер.Прошу у вас помощи.Создала dll библиотеку с заголовочным файлом и cpp.Ниже прикрепляю код.
Код

#pragma once
#ifdef MYDLL_EXPORTS
#define MYDLL_API __declspec(dllexport)
#else
#define MYDLL_API __declspec(dllimport)
#endif
MYDLL_API int *sort(int*, int);


Код

#include "stdafx.h"
#include "Mydll.h"
#include <iostream>

int *sort(int *mas, int size) {
    int tmp;
    for (int i = 0; i < size; i++) {
        for (int j = 0; j < size; j++) {
            if (*(mas + j) > *(mas + j + 1)) {
                tmp = *(mas + j);
                *(mas + j) = *(mas + j + 1);
                *(mas + j + 1) = tmp;
            }
        }
    }
    return mas;
}

Создаю обычное консольное приложение.Указываю компоновщику путь к папке debug библиотеки через дополнительные каталоги библиотек, добавила саму lib библиотеку в дополнительные зависимости.Скинула файл dll в папку консольного приложения. Попробовала и добавить как существующие файлы.Однако все ровно выдает ошибки: не удается открыть источник файла "Mydll.h", не удается открыть файл включения.Код консоли ниже.
Код

#include "stdafx.h"
#include <locale.h>
#include <iostream>
#include <ctime>
#include <conio.h>
#include "Mydll.h"
#pragma comment(lib, "Mydll.lib")
using namespace std;


int main()
{
    int n;
    int *massive;
    srand(time(NULL));
    puts("Enter size");
    scanf_s("%d", &n);
    massive = new int[n];
    for (int i = 0; i < n; i++) {
        *(massive + i) = rand() % 51 - 25;
    }
    for (int j = 0; j < n; j++) {
        cout << "   " << *(massive + j);
    }
    cout << "\n";
    massive = sort(massive, n);
    for (int j = 0; j < n; j++) {
        cout << "   " << *(massive + j);
    }
    return 0;
}

Заранее спасибо!

Это сообщение отредактировал(а) Enrika - 11.3.2018, 21:32
PM MAIL   Вверх
Namira
Дата 11.3.2018, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 27.2.2011

Репутация: нет
Всего: нет



Цитата(Enrika @  11.3.2018,  21:29 Найти цитируемый пост)
#include "Mydll.h"

Этот файл Mydll.h лежит в той же папке где и исходник консольного приложения? Судя по ошибке - нет. Он лежит в папке с DLL, значит его либо нужно скопировать в папку с консольным приложением, либо прописать ему полный путь(можно относительный) к файлу mydll.h
#include "../my_dll_project/MyDll.h"
где ../ - это выход на директорию выше, возможно у тебя будет другой путь. Плюс ко всему тебе нужно объявить макрос в консольном приложении до включения #include "Mydll.h", можно внутри stdafx.h
Вот этот макрос: 
#define MYDLL_EXPORTS
В итоге программа твоя консольная должна выглядеть вот так примерно:
Код

#include "stdafx.h"
#include <locale.h>
#include <iostream>
#include <ctime>
#include <conio.h>
#define MYDLL_EXPORTS
#include "ПутьКФайлу_Mydll_h/Mydll.h"
#pragma comment(lib, "Mydll.lib")
using namespace std;
int main()
{
    int n;
    int *massive;
    srand(time(NULL));
    puts("Enter size");
    scanf_s("%d", &n);
    massive = new int[n];
    for (int i = 0; i < n; i++) {
        *(massive + i) = rand() % 51 - 25;
    }
    for (int j = 0; j < n; j++) {
        cout << "   " << *(massive + j);
    }
    cout << "\n";
    massive = sort(massive, n);
    for (int j = 0; j < n; j++) {
        cout << "   " << *(massive + j);
    }
    return 0;
}

В место ПутьКФайлу_Mydll_h - путь к папке где лежит этот файл. Либо скопируй его в свой консольный проект.
PM   Вверх
Enrika
Дата 11.3.2018, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 11.3.2018

Репутация: нет
Всего: нет



Спасибо огромное !Все наконец то заработало, несколько дней мучилась smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1025 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.