.Net Core. Вызов манагед кода из натива
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 14.05.16 07:42
Оценка: :)))
Начну с того, что в 1С есть технология Внешних компонент Native API Технология создания внешних компонент Технология создания внешних компонент которые работают как под Windows так и под Linux

У меня есть компонента Использование сборок .NET в 1С 7.x b 8.x. Создание внешних Компонент.

Суть которой оборачивание .Net объектов в Com объект с помощью создания класса, реализующего методы интерфейса IReflect

Но хотелось бы прикрутить этот аналог к Linux используя ВК Native API На просторах интернета нашел ссылки вызова управляемого кода из неуправляемого http://forums.dotnetfoundation.org/t/how-to-call-a-net-core-library-from-native-code-on-linux/1576/2

This C++ app allows to run custom C# method from compiled C# .dll on Linux and OS X using coreCLR

http://www.mono-project.com/docs/advanced/embedding/
Смысл идеи таков

На стороне .Net выполнять метод. Параметры сериализуются в Stream. Сначала идет тип, затем данные.

На стороне .Net Параметры десериализутся и вызывается метод InvokeMember нужного типа. При передаче ссылок на объекты их нужно обернуть и сохранить в списке и в натив передавать индекс в списке.

Так как параметры могут изменяться возвращаем как результат значения, так и параметры.

Таким образом можно загружать любые сборки вызывать любые методы.

Так как я не силен в С++ прошу направить на путь истинный или я могу помочь в интеграции натива и манагед

Исходный код обертки можно посмотреть здесь

Или скачать http://files.rsdn.ru/19608/%d0%a4%d0%b0%d0%b9%d0%bb%d1%8bNetObjectToIDispatch.zip

На ru.stackoverflow продублировал вопрос. Может кому будет интересно

http://ru.stackoverflow.com/questions/523386/%d0%92%d1%8b%d0%b7%d0%be%d0%b2-%d1%83%d0%bf%d1%80%d0%b0%d0%b2%d0%bb%d1%8f%d0%b5%d0%bc%d0%be%d0%b3%d0%be-%d0%ba%d0%be%d0%b4%d0%b0-%d0%b8%d0%b7-%d0%bd%d0%b5%d1%83%d0%bf%d1%80%d0%b0%d0%b2%d0%bb%d1%8f%d0%b5%d0%bc%d0%be%d0%b3%d0%be

Выложил статью Кроссплатформенное использование классов .Net из неуправляемого кода. Или аналог IDispatch на Linux
Исходники лежат Здесь


Выложил статьи
Разработка → Кроссплатформенное использование классов .Net в 1С через Native ВК. Или замена COM на Linux
Кроссплатформенное использование классов .Net в 1С через Native ВК. Или замена COM на Linux
Кроссплатформенное использование классов .Net в 1С через Native ВК. Или замена COM на Linux II
Асинхронное программирование в 1С через .Net Native ВК
1С,Linux,Excel,Word,OpenXML,Net Core

Исходники здесь
и солнце б утром не вставало, когда бы не было меня
Отредактировано 22.08.2016 11:12 Serginio1 . Предыдущая версия . Еще …
Отредактировано 09.08.2016 9:12 Serginio1 . Предыдущая версия .
Отредактировано 01.07.2016 10:29 Serginio1 . Предыдущая версия .
Отредактировано 01.07.2016 8:11 Serginio1 . Предыдущая версия .
Отредактировано 26.05.2016 12:00 Serginio1 . Предыдущая версия .
Отредактировано 16.05.2016 5:39 Serginio1 . Предыдущая версия .
Отредактировано 14.05.2016 19:33 Serginio1 . Предыдущая версия .
Отредактировано 14.05.2016 17:28 Serginio1 . Предыдущая версия .
Re: [Offtop] Вызов принят!
От: xobotik Россия  
Дата: 26.05.16 19:56
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>Исходный код обертки можно посмотреть здесь


Напомнило: http://rsdn.ru/article/humor/select_problem.xml
Автор(ы): mrhru
Дата: 27.04.2004


А так спасибо поржал =) Особенно http://pastebin.com/x4m4D2EZ
С уважением!
Re[2]: [Offtop] Вызов принят!
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 26.05.16 21:10
Оценка:
Здравствуйте, xobotik, Вы писали:

X>Здравствуйте, Serginio1, Вы писали:


S>>Исходный код обертки можно посмотреть здесь


X>Напомнило: http://rsdn.ru/article/humor/select_problem.xml
Автор(ы): mrhru
Дата: 27.04.2004


X>А так спасибо поржал =) Особенно http://pastebin.com/x4m4D2EZ

Ты хоть поясни, что тебе напомнило, и где смеяться, и что нужно употребить?
и солнце б утром не вставало, когда бы не было меня
Отредактировано 26.05.2016 21:27 Serginio1 . Предыдущая версия .
Re: .Net Core. Вызов манагед кода из натива
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 27.05.16 16:07
Оценка:
Здравствуйте, Serginio1, Вы писали:

Поделитесь, что смешного?
и солнце б утром не вставало, когда бы не было меня
Re[2]: .Net Core. Вызов манагед кода из натива
От: LWhisper  
Дата: 27.05.16 16:45
Оценка:
S>Поделитесь, что смешного?
Сплетающиеся в любовном экстазе русские и английские буквы, совокупляющиеся с рефлекшеном, на фоне которых забывается сам вопрос.

Если без шуток, то код очень грязный и его тяжело читать. А без понимания того что он делает, сложно что-либо советовать. Желание же ковыряться в нём пропадает с первых строк. Понимаю, что общение с 1C накладывает определенный отпечаток, но не стоит тащить из нее все самое плохое.

И, к слову, в чём заключается вопрос? Ты сам привёл ссылку на статью, чем тебя не устраивает вариант с ExecuteManagedAssembly?
Если нужен способ передачи данных, то, вероятно, это MemoryMappedFile. Если не ошибаюсь, MapFileToMem уже поддерживается. Если нет — нативные пайпы.
Re[2]: .Net Core. Вызов манагед кода из натива
От: Sharov Россия  
Дата: 27.05.16 17:24
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>Здравствуйте, Serginio1, Вы писали:


S>Поделитесь, что смешного?


Кириллица.
Кодом людям нужно помогать!
Re[3]: .Net Core. Вызов манагед кода из натива
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 27.05.16 17:32
Оценка:
Здравствуйте, LWhisper, Вы писали:

S>>Поделитесь, что смешного?

LW>Сплетающиеся в любовном экстазе русские и английские буквы, совокупляющиеся с рефлекшеном, на фоне которых забывается сам вопрос.

Вопрос про вызов манагед методов из нативаю

LW>Если без шуток, то код очень грязный и его тяжело читать. А без понимания того что он делает, сложно что-либо советовать. Желание же ковыряться в нём пропадает с первых строк. Понимаю, что общение с 1C накладывает определенный отпечаток, но не стоит тащить из нее все самое плохое.


То есть комментарии на русском тебя коробят? Методы на русском это сродни комментариям.
Что касается кода, то это обертка над .Net объектов, для вызова в из натива в виде Idispatch
LW>И, к слову, в чём заключается вопрос? Ты сам привёл ссылку на статью, чем тебя не устраивает вариант с ExecuteManagedAssembly?
LW>Если нужен способ передачи данных, то, вероятно, это MemoryMappedFile. Если не ошибаюсь, MapFileToMem уже поддерживается. Если нет — нативные пайпы.

Если бы ты почитал поподробнее то увидел бы, как можно сделать вызов static манагед функции из натива.
А значит можно упаковать ссылку (индекс) на объект, имя метода,параметры с типом в Stream и передавать в виде IntPtr в обе стороны.
Понятно, что со стороны натива нужно передать ссылку в манагед на метод выделения памяти.
Сам .Net так и поступает при маршалинге Com объектов. Просто в Linux нет понятия COM и это надо сделать самим.
Но выхлоп заключается в том, что на линуксе из натива можно вызвать любой .Net объект.
В Windos так и делается. Мало того есть компиляция обертки для использования событий .Net классов в нативе через обертку в COM события.
Что касается ссылок, то я в С++ не силен. Кроме того .Net Core сильно меняется с каждой бетта версией
и солнце б утром не вставало, когда бы не было меня
Re[3]: .Net Core. Вызов манагед кода из натива
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 27.05.16 17:35
Оценка:
Здравствуйте, Sharov, Вы писали:

S>Здравствуйте, Serginio1, Вы писали:


S>>Здравствуйте, Serginio1, Вы писали:


S>>Поделитесь, что смешного?


S>Кириллица.

То есть русский не может писать по русски? Это же обфускация для буржуинов. А пишу то я для 1С овцев, а там все по русски. Даже операторы. Жалко, что на C# нужно переключать клавиатуру.
и солнце б утром не вставало, когда бы не было меня
Re[3]: [Offtop] Вызов принят!
От: xobotik Россия  
Дата: 30.05.16 07:10
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>Здравствуйте, xobotik, Вы писали:


X>>Здравствуйте, Serginio1, Вы писали:


S>>>Исходный код обертки можно посмотреть здесь


X>>Напомнило: http://rsdn.ru/article/humor/select_problem.xml
Автор(ы): mrhru
Дата: 27.04.2004


X>>А так спасибо поржал =) Особенно http://pastebin.com/x4m4D2EZ

S> Ты хоть поясни, что тебе напомнило, и где смеяться, и что нужно употребить?

Почитай https://msdn.microsoft.com/ru-ru/library/ff926074.aspx!
Обычно есть стандарт кодирования, которым придерживаются при разработке базовой библиотеки для какого-либо языка.
Обычно, если ты пишешь допустим на C++ и используешь Qt Framework, пишешь используя стандарт кодирования Qt Framework.
Если ты пишешь на C# и используешь .NET Framework, пишешь используя стандарт кодирования .NET Framework.
Если ты пишешь под 1C, не знаю какой там стандарт =) Но наверно какой-то есть =)
С уважением!
Re[4]: [Offtop] Вызов принят!
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 30.05.16 11:16
Оценка:
Здравствуйте, xobotik, Вы писали:

X>Здравствуйте, Serginio1, Вы писали:


S>>Здравствуйте, xobotik, Вы писали:


X>>>Здравствуйте, Serginio1, Вы писали:


S>>>>Исходный код обертки можно посмотреть здесь


X>>>Напомнило: http://rsdn.ru/article/humor/select_problem.xml
Автор(ы): mrhru
Дата: 27.04.2004


X>>>А так спасибо поржал =) Особенно http://pastebin.com/x4m4D2EZ

S>> Ты хоть поясни, что тебе напомнило, и где смеяться, и что нужно употребить?

X>Почитай https://msdn.microsoft.com/ru-ru/library/ff926074.aspx!

X>Обычно есть стандарт кодирования, которым придерживаются при разработке базовой библиотеки для какого-либо языка.
X>Обычно, если ты пишешь допустим на C++ и используешь Qt Framework, пишешь используя стандарт кодирования Qt Framework.
X>Если ты пишешь на C# и используешь .NET Framework, пишешь используя стандарт кодирования .NET Framework.
X>Если ты пишешь под 1C, не знаю какой там стандарт =) Но наверно какой-то есть =)

И чем тебе мой код смешон? Я стараюсь придерживаться приведенного тобой стандарта.
и солнце б утром не вставало, когда бы не было меня
Re[4]: .Net Core. Вызов манагед кода из натива
От: LWhisper  
Дата: 30.05.16 11:34
Оценка: 3 (1) +5
S> То есть русский не может писать по русски? Это же обфускация для буржуинов. А пишу то я для 1С овцев, а там все по русски. Даже операторы. Жалко, что на C# нужно переключать клавиатуру.
В домашнем проекте ты можешь писать так, как тебе нравится.
Локализованная 1C пошла путём Excel'я и обязывает писать на русском.
Но использовать кириллицу вместе с латиницей, доводя ситуацию до абсурда (МетодObject) — это плохая затея.
Как я уже писал, код невозможно читать. Это вовсе не отторжение к родному языку, и в комментариях он вполне имеет право на жизнь, но в таком виде это обфускация для любого программиста, сродни write-only коду.
Re[4]: .Net Core. Вызов манагед кода из натива
От: LWhisper  
Дата: 30.05.16 11:44
Оценка:
Серьёзно, друг, перечитай своё сообщение. Даже твои посты на форуме невозможно читать, не говоря уже о коде.
Это какой-то поток мыслеобразов, которые понятны лишь тебе.

S> Если бы ты почитал поподробнее то увидел бы, как можно сделать вызов static манагед функции из натива.

S>А значит можно упаковать ссылку (индекс) на объект, имя метода,параметры с типом в Stream и передавать в виде IntPtr в обе стороны.
S>Понятно, что со стороны натива нужно передать ссылку в манагед на метод выделения памяти.
S>Сам .Net так и поступает при маршалинге Com объектов. Просто в Linux нет понятия COM и это надо сделать самим.
S>Но выхлоп заключается в том, что на линуксе из натива можно вызвать любой .Net объект.
S>В Windos так и делается. Мало того есть компиляция обертки для использования событий .Net классов в нативе через обертку в COM события.
S> Что касается ссылок, то я в С++ не силен. Кроме того .Net Core сильно меняется с каждой бетта версией
Я честно пытался прочитать и предыдущий твой пост и этот. Ответа на вопрос — чем тебя не устраивает предложенное в статье решение я не нашёл.
Ты хочешь шарить .NET объекты в виде интерфейсов неявным образом, по образу и подобию COM-объектов? Зачем? Это устаревшая технология, которой на замену давно пришёл C++/CLI. В этом случае стоит посмотреть в сторону CLang, если тебе нужно направление в котором стоит копать. Или ты ищешь готовое решение из коробки? Тебе сюда: https://github.com/Marqin/simpleCoreCLRHost
Отредактировано 30.05.2016 11:47 LWhisper . Предыдущая версия .
Re[5]: .Net Core. Вызов манагед кода из натива
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 30.05.16 11:52
Оценка:
Здравствуйте, LWhisper, Вы писали:

S>> То есть русский не может писать по русски? Это же обфускация для буржуинов. А пишу то я для 1С овцев, а там все по русски. Даже операторы. Жалко, что на C# нужно переключать клавиатуру.

LW>В домашнем проекте ты можешь писать так, как тебе нравится.
LW>Локализованная 1C пошла путём Excel'я и обязывает писать на русском.
LW>Но использовать кириллицу вместе с латиницей, доводя ситуацию до абсурда (МетодObject) — это плохая затея.
LW>Как я уже писал, код невозможно читать. Это вовсе не отторжение к родному языку, и в комментариях он вполне имеет право на жизнь, но в таком виде это обфускация для любого программиста, сродни write-only коду.
Ты плохо понимаешь по русски? То есть в комметариях имеет, а в названиях нет?
и солнце б утром не вставало, когда бы не было меня
Re[5]: .Net Core. Вызов манагед кода из натива
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 30.05.16 11:59
Оценка:
Здравствуйте, LWhisper, Вы писали:

LW>Серьёзно, друг, перечитай своё сообщение. Даже твои посты на форуме невозможно читать, не говоря уже о коде.

LW>Это какой-то поток мыслеобразов, которые понятны лишь тебе.

S>> Если бы ты почитал поподробнее то увидел бы, как можно сделать вызов static манагед функции из натива.

S>>А значит можно упаковать ссылку (индекс) на объект, имя метода,параметры с типом в Stream и передавать в виде IntPtr в обе стороны.
S>>Понятно, что со стороны натива нужно передать ссылку в манагед на метод выделения памяти.
S>>Сам .Net так и поступает при маршалинге Com объектов. Просто в Linux нет понятия COM и это надо сделать самим.
S>>Но выхлоп заключается в том, что на линуксе из натива можно вызвать любой .Net объект.
S>>В Windos так и делается. Мало того есть компиляция обертки для использования событий .Net классов в нативе через обертку в COM события.
S>> Что касается ссылок, то я в С++ не силен. Кроме того .Net Core сильно меняется с каждой бетта версией
LW>Я честно пытался прочитать и предыдущий твой пост и этот. Ответа на вопрос — чем тебя не устраивает предложенное в статье решение я не нашёл.
LW>Ты хочешь шарить .NET объекты в виде интерфейсов неявным образом, по образу и подобию COM-объектов? Зачем? Это устаревшая технология, которой на замену давно пришёл C++/CLI. В этом случае стоит посмотреть в сторону CLang, если тебе нужно направление в котором стоит копать. Или ты ищешь готовое решение из коробки? Тебе сюда: https://github.com/Marqin/simpleCoreCLRHost
Кстати эта ссылка есть и в моих http://forums.dotnetfoundation.org/t/how-to-call-a-net-core-library-from-native-code-on-linux/1576/2
И This C++ app allows to run custom C# method from compiled C# .dll on Linux and OS X using coreCLR




1C под Win понимает только COM. И очень удобно расширять её возможности с помощью COM обертки вокруг .Net объектов.
Для кроссплатформенности введен Native ВК
Для Линукс нужно сделать аналог, с обменом данных между нативом и .Net по аналогии с IDispatch.
За ссылку спасибо. Сейчас изучаю С++. Но времени мало.
и солнце б утром не вставало, когда бы не было меня
Отредактировано 30.05.2016 12:38 Serginio1 . Предыдущая версия . Еще …
Отредактировано 30.05.2016 12:30 Serginio1 . Предыдущая версия .
Re[5]: [Offtop] Вызов принят!
От: LWhisper  
Дата: 30.05.16 12:18
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> И чем тебе мой код смешон? Я стараюсь придерживаться приведенного тобой стандарта.

Противоречит одному из пунктов:

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


Это не потому что мы не любим русский язык, а потому что этот код тяжело читать и с ним трудно работать. C# позволяет использовать символы другого языка в идентификаторах, но делать это строго не рекомендуется. Ты сам писал про необходимость переключать язык. А у меня есть знакомый, который использует европейские умлауты в именах полей и методов. И вот как мне их вводить, с EN/RU раскладкой? А если с твоим кодом придётся работать человеку, у которого EN/FR раскладка? И это только касательно удобства. Как я писал ранее. подобная мешанина затрудняет чтение и хочется скорее закрыть документ, а не разбираться в том, что там происходит.
Re[6]: .Net Core. Вызов манагед кода из натива
От: LWhisper  
Дата: 30.05.16 12:22
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> Ты плохо понимаешь по русски? То есть в комметариях имеет, а в названиях нет?

"По-русски". Да, совершенно верно. В идентификаторах не стоит использовать символы, отличные от нижней ASCII.
Re[6]: [Offtop] Вызов принят!
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 30.05.16 12:28
Оценка:
Здравствуйте, LWhisper, Вы писали:

LW>Здравствуйте, Serginio1, Вы писали:


S>> И чем тебе мой код смешон? Я стараюсь придерживаться приведенного тобой стандарта.

LW>Противоречит одному из пунктов:
LW>

LW>Предоставление читателям возможности делать предположения, основанные на опыте, и поэтому быстрее понимать код.


LW>Это не потому что мы не любим русский язык, а потому что этот код тяжело читать и с ним трудно работать. C# позволяет использовать символы другого языка в идентификаторах, но делать это строго не рекомендуется. Ты сам писал про необходимость переключать язык. А у меня есть знакомый, который использует европейские умлауты в именах полей и методов. И вот как мне их вводить, с EN/RU раскладкой? А если с твоим кодом придётся работать человеку, у которого EN/FR раскладка? И это только касательно удобства. Как я писал ранее. подобная мешанина затрудняет чтение и хочется скорее закрыть документ, а не разбираться в том, что там происходит.


С моим кодом пока работаю только я один. А я 1С ник. И мне удобнее работать с киррилицей.
К хорошему привыкаешь быстро. Попробуй
и солнце б утром не вставало, когда бы не было меня
Re[7]: .Net Core. Вызов манагед кода из натива
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 30.05.16 12:54
Оценка: :))
Здравствуйте, LWhisper, Вы писали:

LW>Здравствуйте, Serginio1, Вы писали:


S>> Ты плохо понимаешь по русски? То есть в комметариях имеет, а в названиях нет?

LW>"По-русски". Да, совершенно верно. В идентификаторах не стоит использовать символы, отличные от нижней ASCII.

Я пишу для 1С ников. А им методы нужны по русски. Они наоборот плюются на ASCII.
Там в большинстве по русски методы COM. Так что все должно быть в едином стиле.
Скоро и вы доживете до Юникоде
и солнце б утром не вставало, когда бы не было меня
Re: .Net Core. Вызов манагед кода из натива
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 01.06.16 07:14
Оценка:
Здравствуйте, Serginio1, Вы писали:

Интересно, что в Microsoft Dynamics AX есть ClrObject
https://msdn.microsoft.com/en-us/library/clrobject.aspx
https://msdn.microsoft.com/en-us/library/clrobject.new.aspx

Вот пример применения

https://blogs.msdn.microsoft.com/x/2010/01/19/traversing-elements-in-an-ienumerable-from-x/

static void GenericTypeDemo(Args _args) 

{ 

    ClrObject o = new ClrObject(“System.Collections.Generic.List`1[System.Int32]”); 

    ClrObject enumerator; 

    int theValue; 


    // o is an instance of an IEnumerable<int> 

    o.Add(1); 

    o.Add(4); 

    o.Add(12); 


    print o.ToString(); 


    enumerator = o.GetEnumerator(); 


    while (enumerator.MoveNext()) 

    { 

        theValue = enumerator.get_Current(); 

        print theValue; 

    } 


    pause; 

}


Странно, что 1С сама не хочет использовать .Net в 1С
и солнце б утром не вставало, когда бы не было меня
Re: .Net Core. Вызов манагед кода из натива
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 01.06.16 07:36
Оценка:
Здравствуйте, Serginio1, Вы писали:

С Текущей ВК к сожалению придется делать обертку на двоичных данных, что бы в них устанавливать свою структуру для того, что бы понять что это за объект. При получении такого объекта на стороне 1С нужно создать ВК обертку и передать эту структуру. Внутри уже вызывать методы используя ссылку.

При передачи в параметрах такой структуры, нужно получать ссылку и передавать уже на сторону .Net. Можно обойтись и просто ссылкой, но тогда при передаче параметров будет непонятно, что это ссылка. БинарныеДанные тоже придется упаковывать в эту структуру.

Можно конечно использовать информацию о методе, так как так или иначе нужно передавать в GetNParams количество параметров. Но в .Net есть перегрузка методов где параметр может быть и интом и объектом

Пример будет выглядеть так

 Врап=Новый("Addin.VK.WrapperNet"); 
 Список=Новый("Addin.VK.NetObject"); 

 Данные=Врап.СоздатьОбъект("System.Collections.Generic.List`1[System.String]"); 

 Список.Обернуть(Данные); 

    Для сч=1 По 10 Цикл 
       Список.Add(строка(сч));     
    КонецЦикла;


Ну и Данные можно передавать в параметрах.


В Native BK есть базовый класс с виртуальными методами

IComponentBase
bool Init(void* pConnection) 

long GetInfo() 

void Done() 

bool RegisterExtensionAs(WCHAR_T** wsLanguageExt) 

long GetNProps() 

long FindProp(const WCHAR_T* wsPropName) 

const WCHAR_T* GetPropName(long lPropNum, long lPropAlias) 

bool GetPropVal(const long lPropNum, tVariant* pvarPropVal) 

bool SetPropVal(const long lPropNum, tVariant* varPropVal) 

bool IsPropReadable(const long lPropNum) 

bool IsPropWritable(const long lPropNum) 

long GetNMethods() 

long FindMethod(const WCHAR_T* wsMethodName) 

const WCHAR_T* GetMethodName(const long lMethodNum, 
                            const long lMethodAlias) 

long GetNParams(const long lMethodNum) 


bool GetParamDefValue(const long lMethodNum, const long lParamNum, 
                          tVariant *pvarParamDefValue) 


bool HasRetVal(const long lMethodNum) 

bool CallAsProc(const long lMethodNum, 
                    tVariant* paParams, const long lSizeArray) 

bool CallAsFunc(const long lMethodNum, 
                tVariant* pvarRetValue, tVariant* paParams, const long lSizeArray) 

void SetLocale(const WCHAR_T* loc) 


bool setMemManager(void* mem)


На самом деле нужны только
Init(void* pConnection) 

void Done() 
bool setMemManager(void* mem)

А все остальные замещает нетовский аналог

public object InvokeMember( 
    string name, 
    BindingFlags invokeAttr, 
    object[] args 
)

Где BindingFlags — перечисление отвечающее за тип вызова
(метод,чтение или установка свойства)
https://msdn.microsoft.com/ru-ru/library/system.reflection.bindingflags(v=vs.110).aspx


В pConnection можно передават ошибку в 1С
и солнце б утром не вставало, когда бы не было меня
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.