Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 15.03.2012
Сообщений: 46
1

Подключение Dll библиотеки, вылетает программа

11.09.2012, 23:22. Просмотров 1149. Ответов 4
Метки нет (Все метки)

Добрый вечер!Помогите пожалуйста разобраться в чем проблема.. Задача: из библиотеки winmm.dll вызвать фукцию PlaySound()(это работает), после воспроизведение должна выводится сума двух чисел, функция суммы должна находится в созданной dll библиотеке, и вызываться с главного консольного проекта(компоновка явная).
Текст программы:
библиотека:
bibl.h

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <windows.h>
#include <tchar.h>
#include <vector>
#include <string>
using namespace std;
namespace MathFuncs
{
    class MyMathFunc
    {
    public:
        static __declspec(dllexport) int Summa(int a,int b);
};
}
bibl.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "bibl.h"
 
#include <stdexcept>
 
using namespace std;
 
namespace MathFuncs
{
    int Summa(int a, int b)
    {
        return a + b;
    }
 
    
}
консольный проект kk. 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
#include <stdio.h>
#include <windows.h>
 #include <mmsystem.h>
int main()
{ // Дескриптор загружаемой dll
  HINSTANCE h;
 
h=LoadLibrary("winmm.dll");
// Объявление указателя на функцию, вызываемой из DLL
typedef int (__stdcall *DllFunk) (LPCTSTR a ,HMODULE b,DWORD c );
DllFunk dllptr;
dllptr=(DllFunk)GetProcAddress(h,"PlaySound");
dllptr("deodorant-spray-1.wav", NULL, SND_FILENAME |SND_SYNC);
FreeLibrary(h);
 
 
// Дескриптор загружаемой dll
HINSTANCE h1;
h1=LoadLibrary("bibl.dll");
// Объявление указателя на функцию суммы
typedef int (__stdcall *DllSum) (int a, int b);
DllSum sum_ptr;
sum_ptr=(DllSum)GetProcAddress(h1,"Summa");
 
int t;
 int a=1;
int b=2;
t=sum_ptr(a,b);
 printf ("%s", "Summa a+b = ");
 printf ("%d \n",t);
 char с =getchar();
FreeLibrary(h1);
}
пробовал подключать def файл, с текством Export Summa

программа вылетает на строчке t=sum_ptr(a,b); как я понимаю. почему?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.09.2012, 23:22
Ответы с готовыми решениями:

Подключение dll библиотеки
Создал консольное приложение, там файл .h и cpp забил нужные функции и скомпилил получив в папке...

Подключение dll библиотеки
Привет. Для работы с шаговым двигателем мне необходимо воспользоваться приложенной к нему dll...

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

Подключение сторонней библиотеки - как указать путь к .dll файлам
Не могу разобраться как указать путь к .dll файлам пробовал следующее: прописывать в свойствах...

4
479 / 471 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
12.09.2012, 00:50 2
Не разбирался с твоим кодом , но если я тебя правельно понял тебе нужно сделать dll в которой будет функция сложение двух чисел и загружаться dll будет динамически . Вот побыстрому наваял проект , поздно заметил , да и уже спать охото
0
Вложения
Тип файла: rar project1.rar (117.1 Кб, 21 просмотров)
3 / 3 / 0
Регистрация: 16.05.2012
Сообщений: 36
12.09.2012, 01:10 3
Проверь указатель на функцию, все ли там верно. GetLastError также прояснит ситуацию с тем, загружается ли функция вообще.
0
Эксперт С++
8325 / 6077 / 604
Регистрация: 10.12.2010
Сообщений: 28,209
Записей в блоге: 27
12.09.2012, 01:22 4
Dynamic-Link Library: Теория + Практика для Builder-a правда, но что есть...
0
0 / 0 / 0
Регистрация: 15.03.2012
Сообщений: 46
12.09.2012, 03:21  [ТС] 5
спасибо всем. проблема решена. функция не экспортировалась
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.09.2012, 03:21

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Подключение динамической библиотеки (DLL), MSVC __declspec dllimport dllexport
Для экспортирования методов из DLL в заголовочном файле используется конструкция...

При использовании самописного DLL-инжектора программа(не инжектор) вылетает
Хелп! Я решил написать dll инжекторЗачем? Ну... Я один из разработчиков игры в стиле &quot;Реалистичный...

Слетели библиотеки .dll При запуске любых приложений на компьютере вылетает ошибка с расширением .dll
Не запускается приложения на windows 8. А также удалились точки доступа Восстановления Системы и...

Подключение библиотеки dll
Создал в c# в проекте ClassLibrary DLL-файл. Получил 1 файл ClassLibrary.dll Теперь мне необходимо...


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

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

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