Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
kolyanb
0 / 0 / 0
Регистрация: 27.03.2009
Сообщений: 3
#1

Работа с DLL - C++

27.03.2009, 01:33. Просмотров 730. Ответов 2
Метки нет (Все метки)

У меня такая проблема не могу экспортировать функцию с шаблоном без шаблона она без проблем работает. Название функции BubleSort.
*.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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
//---------------------------------------------------------------------------
#ifndef SORTDLL_cpp
#define SORTDLL_cpp
 
#include <vcl.h>
#include <windows.h>
#pragma hdrstop
#pragma argsused
#include "SortDLL.h"
 
using namespace std;
 
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
    return 1;
}
//---------------------------------------------------------------------------
 
template <class T>
void BubleSort(const T *&Array, int SIZE)
{
   T temp;
    for (int i = 1; i < SIZE; ++i)
   {
      for (int j = SIZE - 1; j >= i; ++j)
      {
         if (Array[j] > Array[j - 1])
         {
            temp = Array[j];
            Array[j] = Array[j - 1];
            Array[j - 1] = temp;
         }
      }
   }
}
 
int summ(int x)
{
    return x;
}
//---------------------------------------------------------------------------
#endif
*.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#ifndef Sort_DLL_H
#define Sort_DLL_H
#ifdef _DLLEXPORT_
  #define _DECLARATOR_ __declspec(dllexport)
#else
  #define _DECLARATOR_ __declspec(dllimport)
#endif
 
using namespace std;
 
template <class T>
extern void _DECLARATOR_ BubleSort(const T *&Array, int SIZE);
 
extern "C" int _DECLARATOR_ summ(int x);
#endif
Основная программа
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
34
35
36
37
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#include <conio.h>
#include <iostream.h>
 
//---------------------------------------------------------------------------
 
#pragma argsused
int main(int argc, char* argv[])
{
    HINSTANCE dllInstance = LoadLibrary("SortDLL.dll");
   if (dllInstance)
   {
   typedef int (_import *FType(const T *&Array, int SIZE));
    FType *summ;
    summ = (FType *)GetProcAddress(dllInstance, "_BubleSort");
 
   if (summ != NULL)
   {
   int *mas;
   mas = new int [5];
   for (int i = 0; i < 5; ++i)
   {
      mas[i] = rand()%(10);
   }
   summ(mas, 5);
 
 
   FreeLibrary(dllInstance);
   }
   }
   getch();
    return 0;
}
//---------------------------------------------------------------------------
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2009, 01:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с DLL (C++):

Кто может поделиться файлами ogg.dll, vorbis.dll и vorbisfile.dll - 32-х и 64-битными версиями? - C++
Движок перевожу на платформу Win64 и нужно, чтобы разрядность ЕХЕ и DLL совпадали, а в интернете искал 64-битные версии ogg.dll, vorbis.dll...

Windows I/o без Kernel32.dll и Advapi32.dll - C++
Добрый день. Необходимо в Windows XP SP3 распечатать в стандартный поток &quot;some text here&quot; без прямого или косвенного использования...

При компиляции DLL-проекта не создается DLL-ка - C++
Добрый день. создал в Visual Studio 2010 проект C+= типа DLL. В файл dllmain.cpp вставил вот такой код: // test.cpp: определяет...

Работа с dll - C++ Builder
Здравствуйте! Пишу программу с dll-кой. Код написала, все подключила. Но не могу разобраться, как правильно вызвать ее в основной...

Работа с библиотеками dll - C++ Builder
Здравствуйте уважаемые форумчане, заранее прошу прощения если задаю вопрос ответ на который здесь уже бы. (Долго искал но не нашел) ...

Работа с DLL ом, загляните на 1 минуту - C++ Builder
Здрасте всем, создаваю длл по примером, и пытаюс истользовать его в моём приложение вот код из моего приложение: ...

2
Haster
инженер-системотехник
109 / 108 / 2
Регистрация: 10.03.2009
Сообщений: 533
30.03.2009, 14:30 #2
Кажется ошибка в основной программе в строке 17.
typedef int (_import *FType(const T *&Array, int SIZE));
Откуда основная программ узнает, что такое Т?
0
Night_Light
17 / 17 / 2
Регистрация: 14.02.2009
Сообщений: 86
30.03.2009, 15:49 #3
Я могу ошибаться, но на сколько я знаю на данный момент ни один компилятор С++ не поддерживает экспорт шаблоннов. Так что прийдётся отказаться от этой идеи и экспортировать перегруженные методы. P.S. Спецификации шаблонов кажется тоже не экспортируются.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.03.2009, 15:49
Привет! Вот еще темы с ответами:

Builder 2009 работа со статической dll? - C++ Builder
Товарищи кто ни будь работал в Builder 2009 со статически связной dll? После добавления в проект файла .lib (который с dll создался...

Bass.dll работа с сигналом с микрофонного входа аудиокарты - C++ Builder
Подскажите можно ли с помощью Bass.dll получить прямой доступ к АЦП аудиокарты, интересует непосредственно съем сигнала допустим как...

Работа с COM портом с использованием библиотеки TrComPort.dll (TrComPort_BCB.lib) - C++ Builder
Скачивал отсюда: ссылки на форумы запрещены В Project1.cpp подключаем: #pragma comment (lib, &quot;TrComPort_BCB.lib&quot;); #include ...

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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