Страница: 1 |
Вопрос: подключение dll в VB.NEt | Добавлено: 23.03.06 14:54 |
Автор вопроса: ![]() |
Подскажите пожалуйста начинающему в 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 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client Вопросов: 23 Ответов: 879 |
Web-сайт: Профиль | Цитата | #2 | Добавлено: 23.03.06 19:40 |
Избитая проблема. Скорее всего в длл передается что - то управляемое (массив, структура).
Используй маршалинг для устранения этой проблемы. Я где- то приводил общий шаблон, поищи по форуму. |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 1 Ответов: 3 |
Профиль | Цитата | #3 | Добавлено: 24.03.06 13:44 |
to VITO
извини, на что такое маршалинг? |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client Вопросов: 23 Ответов: 879 |
Web-сайт: Профиль | Цитата | #4 | Добавлено: 24.03.06 15:30 |
В общем приведение управляемых типов к неуправляемым.
Класс Marchal включат много разного для взаимодействия с неуправляемым кодом. Обычно просто требуется жестко зафиксировать размер и положение в памяти. Тогда не будет. Object reference not set to an instance of an object
|
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 1 Ответов: 3 |
Профиль | Цитата | #5 | Добавлено: 24.03.06 16:21 |
to VITO
спасибо за совет. но как и где исп-ть этот класс? в коде или в IDE в опциях выставить?.... |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client Вопросов: 23 Ответов: 879 |
Web-сайт: Профиль | Цитата | #6 | Добавлено: 24.03.06 16:59 |
Вот смотри.
Мы вызываем API VersionInfo. Для вызова передается указатель на структуру. Смотри, она объявлена как неуправляемый тип. Imports System.Runtime.InteropServices
<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 И вот как она вызывается. versionInfo.OSVersionInfoSize = Marshal.SizeOf(versionInfo)
Win32API.GetVersionEx(versionInfo) |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 1 Ответов: 3 |
Профиль | Цитата | #7 | Добавлено: 30.03.06 17:06 |
to VITO
еще раз огромное спасибо за помощь! пока не получается.... м/б. Вам на мыло сбросить файлик, размер небольшой буду признателен. |
Страница: 1 |
|