Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > .NET фреймворки > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 09.02.2018, 18:58   #1
proxy3d
Новичок
Джуниор
 
Регистрация: 01.10.2014
Сообщений: 2
По умолчанию Помогите сделать обвязку к библиотеке C#

Добрый день,

столкнулся со следующей проблемой.
На C# есть библиотека, в ней есть функция Transformator.SAX.transform(MemoryS tream inStream, MemoryStream tranformStream);

Как я понимаю по ее названию и описанию я могу вызвать ее из C#, но не из Си или Delphi (в принципе как и Java), я это сделать на прямую не могу.
Единственным решением, как я вижу, является написать для нее библиотеку обертку в которой будет обращение к ней. В этой библиотеке единственным будет функция на экспорт (в том виде, в котором я могу вызвать ее из других языков программирования).

То есть получается цепочка:
Моя программа -> библиотека обертка на C# для вызова Transformator.SAX.transform -> вызов Transformator.SAX.transform в uarmCommon.Tools.dll

у меня две проблемы, обыскал весь инет но еще больше запутался.
1) как объявить в библиотеке-обертке C# вызов Transformator.SAX.transform которая в uarmCommon.Tools.dll (она написана на C#). Просто через DLLImport? или тут механизм другой?
2) как мне экспортировать мою процедуру в библиотеке-обертке вида
void MyFunc(PChar inStr, PChar outStr). Как я понимаю, в C# нет DLLExport. Я нашел только пакет NuGet, который вроде позволяет это сделать. Я правильно понимаю, что мне нужно установить его и воспользоваться им для экспорта функции в стандартном виде, чтобы я мог вызвать ее из других языков?
Я имею ввиду этот пакет
https://github.com/RobertGiesecke/MsBuild.NuGet.Pack
либо этот
https://www.nuget.org/packages/UnmanagedExports

Использую VisualStudio.

Спасибо большое за любые подсказки. А то уже долго бьюсь над этим.
proxy3d вне форума Ответить с цитированием
Старый 09.02.2018, 20:40   #2
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,712
По умолчанию

Насколько я понимаю, решение от Microsoft https://support.microsoft.com/ru-ru/...isual-studio-n
Оно предполагает писать на C# промежуточный COM-объект, из него дергать uarmCommon.Tools.dll, а в верхней программе что-то вроде
Код:
// Initialize COM.HRESULT hr = CoInitialize(NULL);

// Create the interface pointer.
ICalculatorPtr pICalc(__uuidof(ManagedClass));

long lResult = 0;

// Call the Add method.
pICalc->Add(5, 10, &lResult);

wprintf(L"The result is %d", lResult);

// Uninitialize COM.
CoUninitialize();
return 0;
Black Fregat вне форума Ответить с цитированием
Старый 13.02.2018, 16:52   #3
proxy3d
Новичок
Джуниор
 
Регистрация: 01.10.2014
Сообщений: 2
По умолчанию

Я сделал проще. Подцепил пакет DLLExport самый последний (который 2017-2018 года), там запускается батник, пакет собирается из Githab и предлагает прицепиться к проекту. После этого достаточно у своих методов писать [DLLExport] и все работает. проверил, из других языков нормально вызываются экспортируемые функции из C# библиотеки. Мне так было удобней. Хотя с DLLExport пришлось повозиться пока разобрался. Хотя есть видео, как пошагово все делать.
proxy3d вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Я сделал прогу, но мне сказали сделать 2 подпрограммы. Я чет не понял как сделать. Помогите, пожалуйста! kostyan199731 Паскаль, Turbo Pascal, PascalABC.NET 4 25.06.2015 17:00
Вопрос по библиотеке. C# PROkaZZZniK Помощь студентам 1 10.05.2012 21:26
вопрос по библиотеке JIeka Общие вопросы C/C++ 8 26.08.2011 17:19
Ресурсы в статической библиотеке. EUGY Общие вопросы C/C++ 0 09.07.2011 16:35
В библиотеке Mika_32 Паскаль, Turbo Pascal, PascalABC.NET 2 04.04.2010 18:00


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840