Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 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,772
По умолчанию

Насколько я понимаю, решение от 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 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


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