www.map-info.ru :: Просмотр темы - Проблема с подключением DLL? Кто пишет на VB.Net заходите.
                               РќР° главную страницу сайта

 
                                
ВходВход    РегистрацияРегистрация    ПрофильПрофиль    ПользователиПользователи    ГруппыГруппы    FAQFAQ    ПоискПоиск  

 
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
Предыдущая тема :: Следующая тема  
Автор Сообщение
IvanSusanin14



Зарегистрирован: 28.09.2014
Сообщения: 9

СообщениеДобавлено: Вс Сен 28, 2014 1:14 am    Заголовок сообщения: Проблема с подключением DLL? Кто пишет на VB.Net заходите. Добавить ответ со ссылкой на данный текст

Благодаря добрым людям более или менее разобрался.

Последний раз редактировалось: IvanSusanin14 (Чт Окт 02, 2014 4:21 am), всего редактировалось 3 раз(а)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Андрей Могильный



Зарегистрирован: 21.03.2006
Сообщения: 864

СообщениеДобавлено: Пн Сен 29, 2014 10:07 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

В dll делаете экспортируемую функцию, в которой уже вызывается ShowModal вашего диалогового окна. Эту экспортируемую функцию описываете в MapBasic и вызываете.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
IvanSusanin14



Зарегистрирован: 28.09.2014
Сообщения: 9

СообщениеДобавлено: Вт Сен 30, 2014 4:20 am    Заголовок сообщения: За совет спасибо, но проблема так и осталась. Добавить ответ со ссылкой на данный текст

Вот простейший пример кода(мне самому разобраться), который хочу подключить:
Public Class Form5
Public Function eForm() As Object
Me.Show()
End Function
Private Sub Form5_Load(sender As Object, e As EventArgs) Handles MyBase.Load

End Sub
End Class

Отдельно проверял его на ЕХЕ все работает а к МВ не подключается((
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
IvanSusanin14



Зарегистрирован: 28.09.2014
Сообщения: 9

СообщениеДобавлено: Вт Сен 30, 2014 5:55 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Как ни пытался сообщение одно и тоже: Внешняя библиотека не содержит eForm. Не удается прочитать файл приложения.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Андрей Могильный



Зарегистрирован: 21.03.2006
Сообщения: 864

СообщениеДобавлено: Вт Сен 30, 2014 9:58 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Вы на Visual Basic пишете dll??? Тут я пас, т.к. не знаю как там делаются экспортируемые функции.
Пример на Delphi:

library testxor;

function b_xor(n1, n2: Integer): Integer; stdcall;
begin
Result := n1 xor n2;
end;

exports
b_xor;

{$R *.res}

begin
end.

Определение в MapBasic:
Declare Function b_xor Lib "testxor.dll" Alias "b_xor" (ByVal n1 As Integer, ByVal n2 As Integer ) As Integer
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
IvanSusanin14



Зарегистрирован: 28.09.2014
Сообщения: 9

СообщениеДобавлено: Вт Сен 30, 2014 10:13 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

В том то и прикол что я тоже незнаю)) их просто нет, но в сети нашел инфу что специалисты смогли сделать. Правда не нашел как(без глобальных заморочек)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Андрей Могильный



Зарегистрирован: 21.03.2006
Сообщения: 864

СообщениеДобавлено: Вт Сен 30, 2014 1:55 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Ну так не пишите на Visual Basic :) Пишите на нормальных языках - C++, Delphi и т.д., на которых без особых заморочек можно создать dll с экспортируемыми функциями.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
IvanSusanin14



Зарегистрирован: 28.09.2014
Сообщения: 9

СообщениеДобавлено: Вт Сен 30, 2014 2:10 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Я бы рад только незнаю ни одного из перечисленных)) C VB знаком просто лет 10 а в других средах не нуждался пока не понадобилось немодальное окно и вычитал в мануале что на VB тоже можно создать.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
thegeo



Зарегистрирован: 17.01.2012
Сообщения: 119

СообщениеДобавлено: Вт Сен 30, 2014 2:41 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Посмотрите http://dfiles.ru/files/vp3m8zjmf ,
Тема 59. Использование процедур NET в MapBasic программах, стр.157
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
IvanSusanin14



Зарегистрирован: 28.09.2014
Сообщения: 9

СообщениеДобавлено: Вт Сен 30, 2014 2:55 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

thegeo писал(а):
Посмотрите http://dfiles.ru/files/vp3m8zjmf ,
Тема 59. Использование процедур NET в MapBasic программах, стр.157
Спасибо Вам огромное!!!! Напишите номер телефона или кошелек на Ivan_Vysokikh@mail.ru пришлю благодарность!
Еще раз огромное спасибо!!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
thegeo



Зарегистрирован: 17.01.2012
Сообщения: 119

СообщениеДобавлено: Вт Сен 30, 2014 6:15 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Рад был вам помочь. Специальных благодарностей не требуется.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
IvanSusanin14



Зарегистрирован: 28.09.2014
Сообщения: 9

СообщениеДобавлено: Чт Окт 02, 2014 4:10 am    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

При разборе кода обнаружил что кроме Namespace при объявлении нужно использовать RootNamespace(открыть папку проекта и посмотреть файл с расширением .vbproj. Открывается блокнотом или XML редактором)
Пример из мануала:
VB
Namespace MapBasicMethods
Public Class Demo
Public Shared Function SayHello(ByVal s As String) As Integer
System.Windows.Forms.MessageBox.Show("Привет, " + s + "!")
Return s.Length
End Function
End Class
End Namespace

MB
' СинтаксисMapBasic для объяваления.Net-метода какsub-программы
Declare Method SayHello
Class "MapBasicMethods.Demo" Lib "MBMethods.dll"
(ByVal strName As String)
Declare Sub Main
Sub Main
Call SayHello("Фред")
End Sub

Пример из практики:
VB
Namespace MapBasicMethods
Public Class Demo
Public Shared Function SayHello(ByVal s As String) As Integer
System.Windows.Forms.MessageBox.Show("Привет, " + s + "!")
Return s.Length
End Function
End Class
End Namespace

MB
' СинтаксисMapBasic для объяваления.Net-метода какsub-программы
Declare Method SayHello
Class "Имя проекта(dll).MapBasicMethods.Demo" Lib "MBMethods.dll"
(ByVal strName As String)
Declare Sub Main
Sub Main
Call SayHello("Фред")
End Sub

или

VB
Public Class Demo
Public Shared Function SayHello(ByVal s As String) As Integer
System.Windows.Forms.MessageBox.Show("Привет, " + s + "!")
Return s.Length
End Function
End Class

MB
' СинтаксисMapBasic для объяваления.Net-метода какsub-программы
Declare Method SayHello
Class "Имя проекта(dll).Demo" Lib "MBMethods.dll"
(ByVal strName As String)
Declare Sub Main
Sub Main
Call SayHello("Фред")
End Sub

Взаимодействует нормально. Главное правильно описать библиотеку классов.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Top.Mail.Ru