Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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 и вызываете. |
|
Вернуться к началу |
|
|
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 |
|
Вернуться к началу |
|
|
IvanSusanin14
Зарегистрирован: 28.09.2014 Сообщения: 9
|
Добавлено: Вт Сен 30, 2014 10:13 am Заголовок сообщения: |
|
|
В том то и прикол что я тоже незнаю)) их просто нет, но в сети нашел инфу что специалисты смогли сделать. Правда не нашел как(без глобальных заморочек) |
|
Вернуться к началу |
|
|
Андрей Могильный
Зарегистрирован: 21.03.2006 Сообщения: 864
|
Добавлено: Вт Сен 30, 2014 1:55 pm Заголовок сообщения: |
|
|
Ну так не пишите на Visual Basic :) Пишите на нормальных языках - C++, Delphi и т.д., на которых без особых заморочек можно создать dll с экспортируемыми функциями. |
|
Вернуться к началу |
|
|
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 |
|
Вернуться к началу |
|
|
IvanSusanin14
Зарегистрирован: 28.09.2014 Сообщения: 9
|
Добавлено: Вт Сен 30, 2014 2:55 pm Заголовок сообщения: |
|
|
Спасибо Вам огромное!!!! Напишите номер телефона или кошелек на Ivan_Vysokikh@mail.ru пришлю благодарность!
Еще раз огромное спасибо!! |
|
Вернуться к началу |
|
|
thegeo
Зарегистрирован: 17.01.2012 Сообщения: 119
|
Добавлено: Вт Сен 30, 2014 6:15 pm Заголовок сообщения: |
|
|
Рад был вам помочь. Специальных благодарностей не требуется. |
|
Вернуться к началу |
|
|
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
Взаимодействует нормально. Главное правильно описать библиотеку классов. |
|
Вернуться к началу |
|
|
|