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

Проблемы с dll - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.81
voicel
0 / 0 / 0
Регистрация: 17.07.2011
Сообщений: 16
10.08.2011, 09:17     Проблемы с dll #1
Прошу помощи.
Сам написал dll, функции из нёё исправно вызываются из приложения на С++, но во время работы все время скачет ошибка

MVC++ Runtime Library!
Runtime error!
R6031!


Сама dll:
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
43
44
#include <windows.h>
 
#include "mysql.h"
#include "my_global.h"
 
MYSQL sql;
 
void sql_init();
void sql_connect(LPSTR, LPSTR, LPSTR, LPSTR);
void sql_query(LPSTR);
void sql_close();
 
BOOL APIENTRY DllMain (HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
        break;
 
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}
 
void sql_init()
{
    mysql_init(&sql);
}
 
void sql_connect(LPSTR host, LPSTR user, LPSTR pass, LPSTR base)
{
    mysql_real_connect(&sql, host,  user, pass, base, 0, NULL, 0);
}
 
void sql_query(LPSTR query)
{
    mysql_query(&sql, query);
}
 
void sql_close()
{
    mysql_close(&sql);
}
def файл
C++
1
2
3
4
5
6
LIBRARY "controldll"
EXPORTS
    sql_init        @1
    sql_connect     @2
    sql_query       @3
    sql_close       @4
и программа
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
#include <iostream>
using namespace std;
#include <conio.h>
#include <Windows.h>
 
HMODULE hInst;
void (*f1)();
void (*f2)(LPSTR, LPSTR, LPSTR, LPSTR);
void (*f3)(LPSTR);
void (*f4)();
 
void main()
{
    hInst = LoadLibrary("controldll.dll");
 
    if (!hInst)
        cout << "ERROR" << endl;
    else
        cout << "RABOTAET" << endl;
 
    f1 = (void(*)())GetProcAddress(hInst, "sql_init");
    f2 = (void(*)(LPSTR, LPSTR, LPSTR, LPSTR))GetProcAddress(hInst, "sql_connect");
    f3 = (void(*)(LPSTR))GetProcAddress(hInst, "sql_query");
    f4 = (void(*)())GetProcAddress(hInst, "sql_close");
 
    f1();
    f2("localhost","root","","");
    f3("create database Cplusplus");
    f4();
 
    FreeLibrary(hInst);
    getch();
 
}
второй день мучаюсь гугл не помог.
длл работает исправно база данных создается.
но эта ошибка всегда во время исполнения программы.

Добавлено через 7 минут
Еще из других программ моя dll тоже работает вот с такой ошибкой. Но чего с ней я не понимаю
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.08.2011, 09:17     Проблемы с dll
Посмотрите здесь:

Проблемы с Ati2dvag.dll C++
C++ Проблемы с gets
C++ Проблемы с isapi.dll
Проблемы с C++ C++
C++ Проблемы с загрузкой DLL
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
co6ak
Кошковед
 Аватар для co6ak
403 / 496 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
10.08.2011, 09:37     Проблемы с dll #2
Microsoft Visual C++ runtime Library error

Article Keywords: Microsoft Visual C++ runtime Library, Runtime Error!, R6031

Article Text This article resolves the above error

Symptoms: When opening CPS 9.0 the error pops up: Microsoft Visual C++ Runtime Library Runtime Error! Program C:\Progr…. R6031 –Attempt to initialize the CRT more than once. This indicates a bug in your application. OK
Error Message: Runtime Error! Program: C:\program
R6031-Attempt to initialize the CRT more than once. This indicates a bug in your application..

Problem Description: Centricity Practice Solution 9 does not load properly

Resolution
: Delete the Security Update for Windows XP KB955759 from Add/Remove programs and restart the computer. This needs to be on each workstation experiencing the problem. If this does not resolve the issue then remove the registry key:
HKLM-Software-microsoft-windowsNT-appcompatflags-Layers.
Delete the LAYERS folder, and reboot. Additional information regarding this update can be found at http://support.microsoft.com/kb/913395
первая ссылка в гугле
voicel
0 / 0 / 0
Регистрация: 17.07.2011
Сообщений: 16
10.08.2011, 11:10  [ТС]     Проблемы с dll #3
Я это видел, но ничего не понял(

Добавлено через 1 час 29 минут
Никто не поможет?(
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
10.08.2011, 11:13     Проблемы с dll #4
Перевожу: удалите апдейт KB955759 из списка установленных программ и перегрузитесь. Если не поможет ручками удалите ветку реестра HKLM-Software-microsoft-windowsNT-appcompatflags-Layers (всю категорию Layers) и перегрузитесь
voicel
0 / 0 / 0
Регистрация: 17.07.2011
Сообщений: 16
10.08.2011, 11:54  [ТС]     Проблемы с dll #5
в HKLM такого у меня вообще нет(ОС win7)

Остальное удалял уже, никакой реакции.
Мэйби в коде проблема моем?
co6ak
Кошковед
 Аватар для co6ak
403 / 496 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
10.08.2011, 12:12     Проблемы с dll #6
Цитата Сообщение от voicel Посмотреть сообщение
Мэйби

Не по теме:

перевести не смог, а словечки то какие употребляет



на сколько я знаю, реестр в 7 так ни куда и не ушел, хотя грозились.

HKLM - local machine. его по легенде не может не быть
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.08.2011, 15:48     Проблемы с dll
Еще ссылки по теме:

C++ Добавление своей dll в список dll подгружаемых процессом чужого процесса
Обращение к ресурсам DLL из самой DLL C++
Точка входа в процедуру InterlockedCompareExchange64 не найдена в библиотеке DLL KERNEL32.DLL C++

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

Или воспользуйтесь поиском по форуму:
voicel
0 / 0 / 0
Регистрация: 17.07.2011
Сообщений: 16
10.08.2011, 15:48  [ТС]     Проблемы с dll #7
HKLM есть.
Но после категории win nt дальше необходимых категорий просто нету

Добавлено через 4 минуты
Вообщем кроме вариантов гугла предложений не будет видимо

Добавлено через 3 часа 26 минут
Проблема в моей dll(наверно).

Т.к. запустив этот код без функции FreeLibrary все работает на ура.
Все еще нужна помощь...
Yandex
Объявления
10.08.2011, 15:48     Проблемы с dll
Ответ Создать тему
Опции темы

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