Страница: 1 |
Страница: 1 |
Вопрос: подключение dll в VB.NEt
Добавлено: 23.03.06 14:54
Автор вопроса: olegip
Подскажите пожалуйста начинающему в VB.net:
есть библиитека dll (откомпилированный в Microsoft Visual C++ 5.0 (32-bit)), которая в программе VB работает без проблем, а VB.NEt появляется ошибка:
"An unhandled exception has occurred in yoer application.....
System.NullReferenceException: Object reference not set to an instance of an object."
Как с этим бороться?
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #1
Добавлено: 23.03.06 15:39
Без деталей (интерфейс библиотеки, код вызова) явно никто ничего не
ответит.
Номер ответа: 2
Автор ответа:
vito
Разработчик Offline Client
Вопросов: 23
Ответов: 879
Web-сайт:
Профиль | | #2
Добавлено: 23.03.06 19:40
Избитая проблема. Скорее всего в длл передается что - то управляемое (массив, структура).
Используй маршалинг для устранения этой проблемы.
Я где- то приводил общий шаблон, поищи по форуму.
Номер ответа: 3
Автор ответа:
olegip
Вопросов: 1
Ответов: 3
Профиль | | #3
Добавлено: 24.03.06 13:44
to VITO
извини, на что такое маршалинг?
Номер ответа: 4
Автор ответа:
vito
Разработчик Offline Client
Вопросов: 23
Ответов: 879
Web-сайт:
Профиль | | #4
Добавлено: 24.03.06 15:30
В общем приведение управляемых типов к неуправляемым.
Класс Marchal включат много разного для взаимодействия с неуправляемым кодом.
Обычно просто требуется жестко зафиксировать размер и положение в памяти.
Тогда не будет.
Номер ответа: 5
Автор ответа:
olegip
Вопросов: 1
Ответов: 3
Профиль | | #5
Добавлено: 24.03.06 16:21
to VITO
спасибо за совет.
но как и где исп-ть этот класс?
в коде или в IDE в опциях выставить?....
Номер ответа: 6
Автор ответа:
vito
Разработчик Offline Client
Вопросов: 23
Ответов: 879
Web-сайт:
Профиль | | #6
Добавлено: 24.03.06 16:59
Вот смотри.
Мы вызываем API VersionInfo. Для вызова передается указатель на структуру. Смотри, она объявлена как неуправляемый тип.
<StructLayout(LayoutKind.Sequential)> _
Public Structure OSVersionInfo
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=128)> _
Public versionString As String
Public majorVersion As Integer
Public minorVersion As Integer
Public buildNumber As Integer
Public platformId As Integer
Public OSVersionInfoSize As Integer
'Public df() As OSVersionInfo
End Structure
И вот как она вызывается.
Win32API.GetVersionEx(versionInfo)
Номер ответа: 7
Автор ответа:
olegip
Вопросов: 1
Ответов: 3
Профиль | | #7
Добавлено: 30.03.06 17:06
to VITO
еще раз огромное спасибо за помощь!
пока не получается....
м/б. Вам на мыло сбросить файлик, размер небольшой
буду признателен.