Проблемы с dll

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Alprog
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 127
Зарегистрирован: 15.05.2008 (Чт) 14:21
Откуда: Владивосток

Проблемы с dll

Сообщение Alprog » 07.04.2009 (Вт) 16:12

Никак не могу создать dll так, чтобы она работала и на других компьютерах.

Сначала открыл VS2008 C++, выбрал Win32 Project >> DLL.
Объявил всего одну функцию:

Код: Выделить всё
extern "C" __declspec(dllexport) LPVOID GetPointer(LPVOID lp){return lp;}


В VB.NET импортировал следующим образом:

Код: Выделить всё
Public Declare Auto Function VarPtr Lib "VarPtr.dll" Alias "GetPointer" (ByRef v As Integer) As IntPtr


У меня на компьютере выполняется без проблем. Стоит перенести, как он начинает ругаться:
unable to load dll. Приложение не может быть запущено, поскольку оно не корректно настроено.


Плюнул. Решил написать DLL на VB6:

Код: Выделить всё
Public Function GetPtr(ByRef I As Long) As Long
    GetPtr = VarPtr(I)
End Function


Импотировал в VB.NET. У меня на компьютере работает, на других валится с предложением отправить отчёт.

Собственно, :cry:

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Проблемы с dll

Сообщение Williams » 07.04.2009 (Вт) 16:29

Я не знаю, поможет ли это в данном конкретном деле, но не пробовал ли ты P/Invoke (аттрибут DllImport)?
И вы думаете, что вас оставят в живых после прочтения этого поста?

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Проблемы с dll

Сообщение MIT » 07.04.2009 (Вт) 18:35

От себя замечу, пусть и не совсем по теме, но использование в .NET Var и прочих -Ptr запрещено, и может привести к ошибкам во взаимодействии с памятью.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Alprog
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 127
Зарегистрирован: 15.05.2008 (Чт) 14:21
Откуда: Владивосток

Re: Проблемы с dll

Сообщение Alprog » 07.04.2009 (Вт) 18:36

А можно поподробнее?

Пишу так:

Код: Выделить всё
    <DllImport("VarPtr.dll", CharSet:=CharSet.Unicode)> _
    Function GetPointer(ByRef v As Integer) As IntPtr
    End Function


Получаю:

System.Runtime.InteropServices.DllImportAttribute connot be applied to instance method.

Alprog
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 127
Зарегистрирован: 15.05.2008 (Чт) 14:21
Откуда: Владивосток

Re: Проблемы с dll

Сообщение Alprog » 07.04.2009 (Вт) 18:41

Задача-то тривиальная:
Написать библиотеку и подключить её к VB.Net.

Задачу мне удаётся решить только на локальном компьютере.
Что может служить причиной сбоя на других машинах?

HAWK
Википедик
Википедик
 
Сообщения: 74
Зарегистрирован: 02.04.2009 (Чт) 19:28

Re: Проблемы с dll

Сообщение HAWK » 07.04.2009 (Вт) 18:48

А на тех, других компах .NET Framework установлен?

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Проблемы с dll

Сообщение MIT » 07.04.2009 (Вт) 18:51

HAWK писал(а):А на тех, других компах .NET Framework установлен?
:lol:
Если получаешь НЕТ-ошибку, то как на системе может не стоять НЕТа?
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Alprog
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 127
Зарегистрирован: 15.05.2008 (Чт) 14:21
Откуда: Владивосток

Re: Проблемы с dll

Сообщение Alprog » 07.04.2009 (Вт) 18:58

HAWK писал(а):А на тех, других компах .NET Framework установлен?


Стоит. Если приложение не импортирует функции DLL, то работает отлично; в противном случае - рушится.

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Проблемы с dll

Сообщение Nord777 » 07.04.2009 (Вт) 19:12

Получаю:
Цитата:
System.Runtime.InteropServices.DllImportAttribute connot be applied to instance method.


Код: Выделить всё
   <DllImport("VarPtr.dll", CharSet:=CharSet.Unicode)> _
   Shared Function GetPointer(ByRef v As Integer) As IntPtr
   End Function
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Проблемы с dll

Сообщение Mikle » 07.04.2009 (Вт) 19:13

Я писал DLL на PowerBasic, видится в NET на всех компах. Есть там и VarPtr.
Кстати, VarPtr можно импортировать из msvbvm60.dll. Но с VarPtr в NET надо быть осторожнее.

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Проблемы с dll

Сообщение Williams » 07.04.2009 (Вт) 19:44

Аттрибут DllImport применяется к общим (shared) методам. Собственно, Nord777 тебе уже ответил.
И вы думаете, что вас оставят в живых после прочтения этого поста?

Alprog
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 127
Зарегистрирован: 15.05.2008 (Чт) 14:21
Откуда: Владивосток

Re: Проблемы с dll

Сообщение Alprog » 08.04.2009 (Ср) 3:10

Попробовал ImportDll - та же ошибка (Unable to load Dll...)
Последний раз редактировалось Alprog 08.04.2009 (Ср) 3:25, всего редактировалось 1 раз.

Alprog
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 127
Зарегистрирован: 15.05.2008 (Чт) 14:21
Откуда: Владивосток

Re: Проблемы с dll

Сообщение Alprog » 08.04.2009 (Ср) 3:21

Возможно, дело в DLL, может нужно ещё как-то интерфейс описать?
Или при её компиляции какие-то дополнительные файлы устанавливаются...

Alprog
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 127
Зарегистрирован: 15.05.2008 (Чт) 14:21
Откуда: Владивосток

Re: Проблемы с dll

Сообщение Alprog » 08.04.2009 (Ср) 3:24

Mikle писал(а):Я писал DLL на PowerBasic, видится в NET на всех компах. Есть там и VarPtr.
Кстати, VarPtr можно импортировать из msvbvm60.dll. Но с VarPtr в NET надо быть осторожнее.


Можешь дать эту DLL? Я смогу определить в чём дело: в моей DLL, или в том, как я её использую.

Alprog
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 127
Зарегистрирован: 15.05.2008 (Чт) 14:21
Откуда: Владивосток

Re: Проблемы с dll

Сообщение Alprog » 08.04.2009 (Ср) 10:08

Похоже, я зря панику наводил.

Библиотека отказывалась работать, потому что я подсовывал дебаг версию вместо релиз. :oops:

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Проблемы с dll

Сообщение Williams » 08.04.2009 (Ср) 10:29

угу, если делаешь инсталлятор - указывай путь к релизу. По-необходимости переключай на нужную конфигурацию. В релизе также по-умолчанию включены оптимизации.
И вы думаете, что вас оставят в живых после прочтения этого поста?

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Проблемы с dll

Сообщение Mikle » 08.04.2009 (Ср) 15:21

Можешь дать эту DLL?

У тебя она есть - это SR2D. Исходник дам, если надо.


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 40

    TopList