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

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

Восстановить пароль Регистрация
 
yulia_yulia
0 / 0 / 0
Регистрация: 15.03.2012
Сообщений: 46
11.09.2012, 23:22     Подключение Dll библиотеки, вылетает программа #1
Добрый вечер!Помогите пожалуйста разобраться в чем проблема.. Задача: из библиотеки 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); как я понимаю. почему?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.09.2012, 23:22     Подключение Dll библиотеки, вылетает программа
Посмотрите здесь:

подключение библиотеки C++
Подключение библиотеки(timeGetTime()) C++
Подключение dll библиотеки C++
При подключении библиотеки вылетает программа C++
C++ Компиляция dll библиотеки
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Игорь с++
 Аватар для Игорь с++
429 / 452 / 15
Регистрация: 26.01.2011
Сообщений: 2,029
12.09.2012, 00:50     Подключение Dll библиотеки, вылетает программа #2
Не разбирался с твоим кодом , но если я тебя правельно понял тебе нужно сделать dll в которой будет функция сложение двух чисел и загружаться dll будет динамически . Вот побыстрому наваял проект , поздно заметил , да и уже спать охото
Вложения
Тип файла: rar project1.rar (117.1 Кб, 20 просмотров)
D-Vampire
3 / 3 / 0
Регистрация: 16.05.2012
Сообщений: 36
12.09.2012, 01:10     Подключение Dll библиотеки, вылетает программа #3
Проверь указатель на функцию, все ли там верно. GetLastError также прояснит ситуацию с тем, загружается ли функция вообще.
Avazart
 Аватар для Avazart
6900 / 5140 / 252
Регистрация: 10.12.2010
Сообщений: 22,584
Записей в блоге: 17
12.09.2012, 01:22     Подключение Dll библиотеки, вылетает программа #4
Dynamic-Link Library: Теория + Практика для Builder-a правда, но что есть...
yulia_yulia
0 / 0 / 0
Регистрация: 15.03.2012
Сообщений: 46
12.09.2012, 03:21  [ТС]     Подключение Dll библиотеки, вылетает программа #5
спасибо всем. проблема решена. функция не экспортировалась
Yandex
Объявления
12.09.2012, 03:21     Подключение Dll библиотеки, вылетает программа
Ответ Создать тему
Опции темы

Текущее время: 04:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru