Not found dll

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
Kverter
Сообщения: 13
Зарегистрирован: 06 ноя 2013, 10:02

Здравствуйте,вообщем не могу понять в чем проблема...
есть элементарная прога на VB 6.0 вот код на всякий

Код: Выделить всё

Private Declare Function Group Lib "C:\123\1.dll" Alias "DisplayHelloFromDLL" () As Integer
Private Sub Result_Click()
Dim k As Long, i As Integer
k = Group
MsgBox ("Group::" & Group)
End Sub
как видим должна вызваться функция DisplayHelloFromDLL из dll с полным именем "C:\123\1.dll", но при запуске прога вылетает с ошибкой что не может найти этот файл, хотя он там есть...кто знает в чем проблема????
вот кстати код этой DLL

Код: Выделить всё

#include <stdio.h>
 
extern "C"
{
    __declspec(dllexport) int DisplayHelloFromDLL()
    {
        //printf ("Hello from DLL !\n");
        int a= 5+3;
        return a;
    }
    __declspec(dllexport) double D(double b)
    {
        return b+5;
    }
}
 
Kverter
Сообщения: 13
Зарегистрирован: 06 ноя 2013, 10:02

Добавил LoadLibrary иона возвращает 0 значит библиотека не инициализировалось....в чем может быть проблема? может использовать regsvr32 , но при попытке это сделать вылетает ошибка "модуль не может быть загружен ...."
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Ни разу не видел, чтобы Lib в Declare содержала путь.
Попробуйте положить библиотеку в папку, перечисленную в PATH.

FUI:
regsvr32.exe применима только к COM-серверам. regsvr32.exe делает LoadLibrary и вызывает одну из двух функций с предопределёнными названиями, которые регистрируют или разрегистрируют СОМ-сервер, т.е. прописывают или удаляют в реестре их CLSID и ProgID

Update:
А еще проверьте, вдруг Вы компилируете 32-разрядное приложение, а библиотека 64-х
Kverter
Сообщения: 13
Зарегистрирован: 06 ноя 2013, 10:02

Дело не в этом с путем все норм там его можно указывать, проблема в том что LoadLibrary("C:\123\test.dll") возвращает 0,не понятно почему....
брал менял на LoadLibrary("C:\windows\system32\kernel32.dll") возвращался адресс, но при копировании kernel32 в другую папку например в c:\test и попробовал загрузить ее так LoadLibrary("C:\test\kernel32.dll") опять возвращается 0.....глюк какой то
Ответить