Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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-сайт: www.vbnet.ru
 Профиль | | #1
Добавлено: 23.03.06 15:39
Без деталей (интерфейс библиотеки, код вызова) явно никто ничего не
ответит.

Ответить

Номер ответа: 2
Автор ответа:
 vito



Разработчик Offline Client

Вопросов: 23
Ответов: 879
 Web-сайт: softvito.narod2.ru
 Профиль | | #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-сайт: softvito.narod2.ru
 Профиль | | #4
Добавлено: 24.03.06 15:30
В общем приведение управляемых типов к неуправляемым.
Класс Marchal включат много разного для взаимодействия с неуправляемым кодом.

Обычно просто требуется жестко зафиксировать размер и положение в памяти.
Тогда не будет.
Object reference not set to an instance of an object

Ответить

Номер ответа: 5
Автор ответа:
 olegip



Вопросов: 1
Ответов: 3
 Профиль | | #5 Добавлено: 24.03.06 16:21
to VITO
спасибо за совет.
но как и где исп-ть этот класс?
в коде или в IDE в опциях выставить?....

Ответить

Номер ответа: 6
Автор ответа:
 vito



Разработчик Offline Client

Вопросов: 23
Ответов: 879
 Web-сайт: softvito.narod2.ru
 Профиль | | #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
Автор ответа:
 olegip



Вопросов: 1
Ответов: 3
 Профиль | | #7 Добавлено: 30.03.06 17:06
to VITO
еще раз огромное спасибо за помощь!
пока не получается....
м/б. Вам на мыло сбросить файлик, размер небольшой
буду признателен.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам