Страница 1 из 1

Not found dll

Добавлено: 10 дек 2013, 09:51
Kverter
Здравствуйте,вообщем не могу понять в чем проблема...
есть элементарная прога на 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;
    }
}
 

Re: Not found dll

Добавлено: 10 дек 2013, 11:46
Kverter
Добавил LoadLibrary иона возвращает 0 значит библиотека не инициализировалось....в чем может быть проблема? может использовать regsvr32 , но при попытке это сделать вылетает ошибка "модуль не может быть загружен ...."

Re: Not found dll

Добавлено: 10 дек 2013, 14:56
Naeel Maqsudov
Ни разу не видел, чтобы Lib в Declare содержала путь.
Попробуйте положить библиотеку в папку, перечисленную в PATH.

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

Update:
А еще проверьте, вдруг Вы компилируете 32-разрядное приложение, а библиотека 64-х

Re: Not found dll

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