Прикладная библиотека средствами VB .NET 2008 (помогите ламеру !)

Автор Головин Егор, 16.09.11, 15:57:50

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Головин Егор

У меня есть Компас 13 и Visual Basic 2008
И небольшой опыт создания обычных приложений на этом самом Basic'e.

И мне нужно как-то автоматизировать сравнение двух чертежей (старого и нового)

Пожалуйста, ткните меня носом, с чего начать ...  ::)


Головин Егор

Дааайте образец библиотеки, сделанной на Visual Basic NET,
а дальше я бы и сам написал туда что мне надо ...    Как-нибудь ...
:(((.

Примеры в SDK есть только под VB, под NET, нужно будет их адаптировать, но если Вы хорошо знаете Visual Basic NET, попробуйте адаптировать примеры из SDK, начиная с самого простого.

Головин Егор

В примерах для Visual Basic'a там вообще что-то непонятное:

В справке написано, что каждая библиотека должна иметь функции
LIBRARYENTRY LibraryName и LIBRARYID. А ни в одном примере для Basic LIBRARYENTRY и  LIBRARYID нет ... А вместо LibraryName - GetLibraryName

А когда я конвертирую образцы библиотек из 6 в NET средствами Visual STUDIO и потом пытаюсь подключить скомпилированную dll в Компас, тот сообщает, что неверная структура библиотеки

Я с Basic не знаком, но все равно хочется посмотреть на код после конвертации, например Step1, а там гладишь совместными усилиями, что-нибудь придумаем.

Головин Егор

Получается в проекте один файл с  вот таким классом

Option Strict Off
Option Explicit On
<System.Runtime.InteropServices.ProgId("Step1_NET.Step1")> Public Class Step1
   ' step1.cls - Самая простая библиотека на Visual Basic 6.0
   
   ' Определить имя библиотеки
   Public Function GetLibraryName() As String
      GetLibraryName = "Самая простая библиотека на Visual Basic 6.0" ' Имя библиотеки
   End Function
   
   ' Головная функция библиотеки
   'UPGRADE_NOTE: command was upgraded to command_Renamed.
Click for more: '[url="ms-help://ms.vscc.v90/dv_commoner/local/redirect.htm?keyword="A9E4979A-37FA-4718-9994-97DD76ED70A7"'"]ms-help://ms.vscc.v90/dv_commoner/local/redirect.htm?keyword="A9E4979A-37FA-4718-9994-97DD76ED70A7"'[/url]


   Public Sub ExternalRunCommand(ByVal command_Renamed As Short, ByVal mode As Short, ByVal Kompas As Kompas6API5.Application)
      Kompas.ksMessage("Привет !!!") ' Выдача сообщения пользователю
   End Sub

End Class

В котором и не было и нет точки входа (LibraryEntry)

А в примерах для Delphi и С++ есть.   А ведь требования Компаса к библиотекам должны быть для всех одинаковые,
значит в SDK неправильные примеры для Basic.
А вот узнать бы как пишут на других языках (у кого работает)

GetlibraryName или LibraryName, обязательно ли нужна LibraryENTRY и как её пишут .

То есть мне бы посмотреть не в примере из SDK, которым я уже не верю, в том, что действительно работает.

Главное бы подключить библиотеку к Компасу, а дальше всё в его HELPe написано


Головная функция библиотеки из примера Step1 отличается только используемыми типами данных Integer и Short возможно, где-то здесь собака порылась, что длина данных не совпадает.

Public Sub ExternalRunCommand(ByVal command As Integer, ByVal mode As Integer, ByVal Kompas As Kompas6API5.Application)
  Kompas.ksMessage "Привет !!!"      ' Выдача сообщения пользователю
End Sub

Цитата: Головин Егор от 17.09.11, 11:07:33
В котором и не было и нет точки входа (LibraryEntry)

А в примерах для Delphi и С++ есть.   А ведь требования Компаса к библиотекам должны быть для всех одинаковые,
значит в SDK неправильные примеры для Basic.
А вот узнать бы как пишут на других языках (у кого работает)

GetlibraryName или LibraryName, обязательно ли нужна LibraryENTRY и как её пишут .

То есть мне бы посмотреть не в примере из SDK, которым я уже не верю, в том, что действительно работает.

Главное бы подключить библиотеку к Компасу, а дальше всё в его HELPe написано
В Вашем случае почитайте раздел "Создание прикладных библиотек" справки SDK.