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

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

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

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

11.09.2012, 23:22. Просмотров 855. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.09.2012, 23:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Подключение Dll библиотеки, вылетает программа (C++):

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

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

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

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

Компиляция dll библиотеки - C++
Как правильно скомпилировать dll библиотеку, чтобы имена методов не изменялись? Например, у меня есть метод с именем Java_Test_test, а...

Создание dll библиотеки c++ - C++
Есть проект, где много заголовочных файлов. Как собрать dll библиотеку так, чтобы потом использовать только 1 заголовочный файл, а...

4
Игорь с++
436 / 459 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
12.09.2012, 00:50 #2
Не разбирался с твоим кодом , но если я тебя правельно понял тебе нужно сделать dll в которой будет функция сложение двух чисел и загружаться dll будет динамически . Вот побыстрому наваял проект , поздно заметил , да и уже спать охото
0
Вложения
Тип файла: rar project1.rar (117.1 Кб, 20 просмотров)
D-Vampire
3 / 3 / 0
Регистрация: 16.05.2012
Сообщений: 36
12.09.2012, 01:10 #3
Проверь указатель на функцию, все ли там верно. GetLastError также прояснит ситуацию с тем, загружается ли функция вообще.
0
Avazart
Эксперт С++
7213 / 5385 / 286
Регистрация: 10.12.2010
Сообщений: 23,796
Записей в блоге: 17
12.09.2012, 01:22 #4
Dynamic-Link Library: Теория + Практика для Builder-a правда, но что есть...
0
yulia_yulia
0 / 0 / 0
Регистрация: 15.03.2012
Сообщений: 46
12.09.2012, 03:21  [ТС] #5
спасибо всем. проблема решена. функция не экспортировалась
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.09.2012, 03:21
Привет! Вот еще темы с ответами:

подключение библиотеки - C++
доброго времени суток, при подключении библиотеки #pragma comment(lib, &quot;OpenGL.lib&quot;) (все это проделываю в visual c++) необходимо ли...

подключение библиотеки - C++
помогите подключить библиотеку header. какой не ввожу кож пишет ошибку, мне сказали что у меня не подключена библиотека помогите кто...

Подключение библиотеки - C++
Здраствуйте. Как мне подключить библиотеку к проекту только 1 раз. тоесть есть у меня 4 срр файла каждий поключаен набор библиотек ...

cygwin1.dll не хватает библиотеки - C++
всем привет интересно узнать, как можно &quot;подключить&quot; или &quot;вшить&quot; данную библиотеку в программу, чтобы программа не требовала этой...


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

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

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