Форум программистов, компьютерный форум 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. Просмотров 2141. Ответов 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-ки
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TeachMeC
18 / 18 / 4
Регистрация: 10.01.2014
Сообщений: 45
10.01.2014, 21:44     Подключение dll к проекту в visual studio #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  [ТС]     Подключение dll к проекту в visual studio #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
Эксперт С++
7115 / 5292 / 273
Регистрация: 10.12.2010
Сообщений: 23,387
Записей в блоге: 17
20.01.2014, 16:44     Подключение dll к проекту в visual studio #4
Цитата Сообщение от ustus_alex Посмотреть сообщение
Но как только я беру нужную мне конфигурацию x64, то dll-ка не грузится... Как бы можно было бы обойти эту проблему?
Скачать 64-x битную версию DLL-ки для данной библиотеки.
ustus_alex
6 / 6 / 1
Регистрация: 22.11.2013
Сообщений: 110
Завершенные тесты: 1
20.01.2014, 17:27  [ТС]     Подключение dll к проекту в visual studio #5
Цитата Сообщение от Avazart Посмотреть сообщение
Скачать 64-x битную версию DLL-ки для данной библиотеки.
64 разрядной версии библиотеки, к сожалению,не существует...
Означает ли это, что путь к ее использованию закрыт и никакие финты типа :
C++
1
HINSTANCE hMyDLL = LoadLibraryEx(L"DLL_Name.ascet_psl", NULL, 0x00000002);
помочь уже не смогут?
Avazart
Эксперт С++
7115 / 5292 / 273
Регистрация: 10.12.2010
Сообщений: 23,387
Записей в блоге: 17
20.01.2014, 17:28     Подключение dll к проекту в visual studio #6
Нужно читать о совместимости версий.

Организация доступа к 32-bit DLL из 64-bit приложения.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.01.2014, 17:40     Подключение dll к проекту в visual studio
Еще ссылки по теме:
C++ Как подключить библиотеку MPIR к проекту в Visual Studio 2013 express?
Visual Studio не видит dll файл C++
Экспорт классов из dll библиотек (Visual Studio) C++
Подключение curl к visual studio 2010 C++
Подключение библиотеки curl в Visual Studio C++

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

Или воспользуйтесь поиском по форуму:
ustus_alex
6 / 6 / 1
Регистрация: 22.11.2013
Сообщений: 110
Завершенные тесты: 1
20.01.2014, 17:40  [ТС]     Подключение dll к проекту в visual studio #7
Спасибо, понял куда копать
Yandex
Объявления
20.01.2014, 17:40     Подключение dll к проекту в visual studio
Ответ Создать тему
Опции темы

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