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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
ustus_alex
6 / 6 / 1
Регистрация: 22.11.2013
Сообщений: 110
Завершенные тесты: 1
#1

Подключение dll к проекту в visual studio - C++

10.01.2014, 15:03. Просмотров 2215. Ответов 6
Метки нет (Все метки)

Доброго дня,

тема уже эта конечно избитая на форуме, но так и не смог найти решения под свою конкретную задачу, прочитав все, что имеется на форуме, и посмотрев примеры на msdn.

Есть у меня динамическая библиотека, с нестандартным расширением на конце .ascet_psl.

По уверению одностаничного мануала с которым идет библиотека, в котором вообще ничего полезного нет, это все же dll-ка.
К этой dll-ке у меня есть еще и заголовочный файл. И все... файла .lib у меня в комплекте нет...

Частичное содержание заголовочного файла:

C++
1
2
3
4
5
6
7
8
9
10
11
#pragma once
#pragma pack(push,4)
 
#ifdef ASCCET_MODEL_EXPORTS
#define ASCCET_MODEL_DLL __declspec(dllexport)
#else
#define ASCCET_MODEL_DLL
#endif
extern "C" {
ASCCET_MODEL_DLL int Initialise();
}
Вопрос как можно прикрутить такое творение в visual studio?
Цель моей задачи из этой библиотеки сделать другую, в которой будет использоваться реализованные алгоритмы этой dll-ки
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2014, 15:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Подключение dll к проекту в visual studio (C++):

Подключение dll к проекту на Visual Studio - C++
Привет. Я в этом деле новичок еще не приходилось собирать с нуля проекты с .dll в visual studio 2012 поэтому смутно понимаю с чего нужно...

Подключение MYSQL к проекту Visual Studio C++ - C++
Здравствуйте, как подключить базу данных MYSQL, phpMyAdmin к проекту (CLR/Windows Forms C++)?

Подключение dll (C++) к проекту VB 6.0 - C++
Здравствуйте! Проблемма в подключении ДЛЛ к VB 6. есть библиотека на C++ //ConsoleApplication2.cpp: определяет точку входа для...

Подключение dll к проекту из внешней директории - C++
Всем привет. Компилятор: mingw IDE: обычный блокнот + консоль Ситуация: Я создаю несколько мини программ (~200 строк...

Подключение к проекту С++ dll, lib файлов - C++
Всем привет. Возникла необходимость подключения библиотек POCO - Download; POCO - POCO Zip Library; В частичности интересует...

Подключение dll к проекту в среде Dev C++ - C++
Добрый день, Первый день с Dev c++ Мне нужно к проекту подключить dll библиотеку. Как это правильно сделать? Мной сделано следующее:...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
TeachMeC
18 / 18 / 4
Регистрация: 10.01.2014
Сообщений: 45
10.01.2014, 21:44 #2
Цитата Сообщение от ustus_alex Посмотреть сообщение
Вопрос как можно прикрутить такое творение в visual studio?
Цитата Сообщение от ustus_alex Посмотреть сообщение
. файла .lib у меня в комплекте нет...
Грузите dll динамически, через LoadLibrary и .lib не нужен

Добавлено через 2 минуты
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
#include <windows.h>
#include <iostream>
 
 
typedef int ( WINAPIV * LPFN_Initialise ) ( ); 
 
int main()
{
    HINSTANCE hMyDLL = LoadLibraryW(L"DLL_Name.ascet_psl");
 
  if (NULL == hMyDLL) 
   std::cout << "LoadLibrary Error"; 
  else
  {
    LPFN_Initialise fnName = (LPFN_Initialise)GetProcAddress(
                                           hMyDLL,
                          "Initialise" );
    if (NULL == fnName) 
       std::cout << "GetProcAddress Error"; 
    else
    {                                                         
      std::cout << fnName();  
    }
    FreeLibrary( hMyDLL );
  }
  std::cin.get();
  std::cin.get();
}
ustus_alex
6 / 6 / 1
Регистрация: 22.11.2013
Сообщений: 110
Завершенные тесты: 1
20.01.2014, 16:23  [ТС] #3
Цитата Сообщение от TeachMeC Посмотреть сообщение
Грузите dll динамически, через LoadLibrary и .lib не нужен

Добавлено через 2 минуты
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
#include <windows.h>
#include <iostream>
 
 
typedef int ( WINAPIV * LPFN_Initialise ) ( ); 
 
int main()
{
    HINSTANCE hMyDLL = LoadLibraryW(L"DLL_Name.ascet_psl");
 
  if (NULL == hMyDLL) 
   std::cout << "LoadLibrary Error"; 
  else
  {
    LPFN_Initialise fnName = (LPFN_Initialise)GetProcAddress(
                                           hMyDLL,
                          "Initialise" );
    if (NULL == fnName) 
       std::cout << "GetProcAddress Error"; 
    else
    {                                                         
      std::cout << fnName();  
    }
    FreeLibrary( hMyDLL );
  }
  std::cin.get();
  std::cin.get();
}
Выражаю огромнейшую благодарность. К сожалению, только сейчас руки снова дошли до этой библиотеки.

И, вот, что я обнаружил, если использовать в Visual Studio конфигурацию Win32, то библиотека грузится должным образом и я получаю доступ ко всем ее функциям.

Но как только я беру нужную мне конфигурацию x64, то dll-ка не грузится... Как бы можно было бы обойти эту проблему?
Avazart
Эксперт С++
7145 / 5322 / 275
Регистрация: 10.12.2010
Сообщений: 23,556
Записей в блоге: 17
20.01.2014, 16:44 #4
Цитата Сообщение от ustus_alex Посмотреть сообщение
Но как только я беру нужную мне конфигурацию x64, то dll-ка не грузится... Как бы можно было бы обойти эту проблему?
Скачать 64-x битную версию DLL-ки для данной библиотеки.
ustus_alex
6 / 6 / 1
Регистрация: 22.11.2013
Сообщений: 110
Завершенные тесты: 1
20.01.2014, 17:27  [ТС] #5
Цитата Сообщение от Avazart Посмотреть сообщение
Скачать 64-x битную версию DLL-ки для данной библиотеки.
64 разрядной версии библиотеки, к сожалению,не существует...
Означает ли это, что путь к ее использованию закрыт и никакие финты типа :
C++
1
HINSTANCE hMyDLL = LoadLibraryEx(L"DLL_Name.ascet_psl", NULL, 0x00000002);
помочь уже не смогут?
Avazart
Эксперт С++
7145 / 5322 / 275
Регистрация: 10.12.2010
Сообщений: 23,556
Записей в блоге: 17
20.01.2014, 17:28 #6
Нужно читать о совместимости версий.

Организация доступа к 32-bit DLL из 64-bit приложения.
ustus_alex
6 / 6 / 1
Регистрация: 22.11.2013
Сообщений: 110
Завершенные тесты: 1
20.01.2014, 17:40  [ТС] #7
Спасибо, понял куда копать
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.01.2014, 17:40
Привет! Вот еще темы с ответами:

Подключение dll на C# к проекту на С++ и вызов функции из неё - C++
Здравствуйте. В программировании откровенно говоря я пока никакой, но возникла экстренная необходимость подключить внешнюю dll, написанную...

Как подключить библиотеку MPIR к проекту в Visual Studio 2013 express? - C++
Подскажите, пожалуйста, как подключить библиотеку MPIR к проекту в visual studio 2013 express? Добавлено через 28 секунд Желательно...

Visual Studio не видит dll файл - C++
Для лабораторной было задано написать программу. Был найден пример в интернете, найдена для него куча дополнительный файлов, исправлены...

Подключение библиотек в Visual Studio - C++
Хочу подключить библиотеки DirectX (да и не только) к среде Visual Studio 2017, но не через свойства проекта и указания пути к библиотекам,...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
20.01.2014, 17:40
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru