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

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

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

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

Ответ
 
Опции темы
Старый 09.02.2018, 19: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, 21:40   #2
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,521
По умолчанию

Насколько я понимаю, решение от 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, 17:52   #3
proxy3d
Новичок
Джуниор
 
Регистрация: 01.10.2014
Сообщений: 2
По умолчанию

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Я сделал прогу, но мне сказали сделать 2 подпрограммы. Я чет не понял как сделать. Помогите, пожалуйста! kostyan199731 Паскаль, Turbo Pascal, PascalABC.NET 4 25.06.2015 18: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


05:01.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.