войти зарегистрироваться

C++DynLib: библиотека для создания и работы с DLL из песочницы

image Библиотека DynLib предоставляет удобные средства для разработчиков, использующих межмодульное взаимодействие (EXE<->DLL, DLL<->DLL) в своих проектах, и значительно сокращает время и количество кода.

DynLib была написана для внутреннего использования одним из наших сотрудников SergX и стала неотъемлемым инструментом разработки. Под катом делимся результатами.

DelphiИспользование dll библиотек математического ядра системы Matlab в приложениях Delphi из песочницы

Матлаб для математика — это… Это не имеет выражения в словах. Это просто наше все. Мощь, предоставляемая этим пакетом математического ПО просто ошеломляет. Если что-то нельзя сделать в матлабе, то это, скорее всего, нельзя сделать на компьютере вообще. А еще вероятнее, что Вы просто не знаете, как это делать.А теперь предадимся мечтам: как бы хотелось иметь всю эту мощь под рукой в родной и милой сердцу Delphi, например… Нет ничего проще!

Маленькое и незаметное примечание

Данная статья затрагивает лишь малую часть такой обширной темы, как взаимодействие разрабатываемых прикладных программ с сервисами, предлагаемыми Матлабом. Помимо описанного тут, существуют и другие способы воспользоваться услугами этого элитного математического пакета. Описанный способ хорош тем, что при наличии всех нужных dll библиотек, сам Матлаб уже не нужен. К тому же, данный способ относительно неплох в плане производительности. Минус его в том, что приходится таскать за собой пак библиотек почти на 10 Мб. Также не доступны функции тулбоксов Матлаба.

О чем речь?

Математическое ядро Матлаба до xx версии (ну забыл я, до какой!) было сосредоточено в пакете dll библиотек. В этих библиотеках хранятся функции для выполнения самых различных вычислений. Если установить Матлаб без единого тулбокса и без Симулинка, то все вычисления, которые можно выполнить в командной строке среды, реализованы через функции из этих самых библиотек. Помните Pascal Numerical Toolbox? Так вот он — игрушечная лопатка, по сравнению с бульдозером Матлаба. А в чем же подвох? Вам придется изрядно потрудиться, чтобы этот бульдозер завести.

Большое и жирное примечание

dll-библиотеки математического ядра Матлаба до определенной версии употребляются самим Матлабом, поэтому лежат среди исполняемых файлов пакета. В последних версиях самим Матлабом они уже не используются, однако архив с ними все равно поставляется вместе с пакетом (Необходим для работы программ, созданных в Matlab Compiler). Теоретически. Я его так и не нашел. Если хотите воспользоватеься библиотеками ищите их в интернете. Обычно, это файл mglinstaller.exe. И не забудьте поинтересоваться условиями использования — тут я тоже не в курсе. Далее я предполагаю, что библиотеки у Вас уже есть.

.NETИспользование SCM для управления драйверами в C# реализованной с помощью dll на C++/cli из песочницы

Service Control Manager (SCM)


SCM — это сервер, реализованный в Windows, для удаленного управления сервисами (вызовом процедур).

Для того, чтобы запустить драйвер в Windows, ему в соответствие ставится сервис, который обеспечивает управление этим драйвером. Не путать с устройством, которое создает драйвер в системе, через которое происходит обмен сообщениями с драйвером. Это устройство создается уже после старта драйвера, а вот SCM обеспечивает само внесение драйвера в систему. С помощью SCM можно: добавлять, удалять, запускать или останавливать службы.

Постановка задачи


Написать буферный класс позволяющий упростить работу SCM в C#.
Сам внешний вид этого класса можно обознать очень просто:

    public ref class ServiceControlManager : public IDisposable
	{
	public:
		ServiceControlManager(void);
		void AddDriver(String^ ServiceName, String^ BinaryPathName);
		void DeleteDriver(String^ ServiceName);
		void StartDriver(String^ ServiceName);
		void StopDriver(String^ ServiceName);
	protected:
		~ServiceControlManager();
        !ServiceControlManager();
	private:
		SC_HANDLE SCMHandle;
	};

Конструктор, деструктор, финализатор, основные методы, из атрибутов только HANDLE объекта SCM. Из этого следует, что экземпляр объекта этого класса будет содержать в себе созданный объект SCM, а методы упрощают с ним работу. Класс является буферным, и поскольку он реализован в C++/cli он будет автоматически масштабируем для работы в среде .NET, соответственно и в C#.

Open sourceMouse Track — Библиотека MouseTrackAPI

Здравствуйте! Рад сообщить, что проект MouseTrack не канул в лету, а продолжает свое развитие. Кто не понял о чем речь: Статья №1 и Статья №2.

Со времени публикации проекта на code.google.com было сделано немногое (основное время — это учеба, предстоящая сессия, да и здоровье не позволяло много времени проводить за компьютером), а именно написана библиотека MouseTrackAPI.dll.

ПрограммированиеСоздание и использование динамических библиотек, написанных на различных языках (C/C++, Pascal) из песочницы

Задача


Передо мной возникла задача написать загрузчик библиотек, имеющий возможность предоставить какие-то интерфейсные функции внешней динамической библиотеке. Решение должно быть максимально кроссплатформенно (как минимум, работать на Linux и Windows). Загружаться должны библиотеки, написанные на различных языках программирования, поддерживающих создание динамических библиотек. В качестве примера были выбраны языки C и Pascal.

Решение


Основной загрузчик библиотек написан на языке C. Для того, чтобы загружаемые библиотеки имели возможность использовать функции основной программы, основная программа разделена на 2 части: на основной и подгружаемый модули. Основной модуль нужен просто для запуска программы, подгружаемый модуль — это также динамическая библиотека, связываемая с основным модулем во время его запуска. В качестве компиляторов были выбраны gcc (MinGW для Windows) и fpc.
Здесь будет приведён упрощённый пример программы, позволяющий разобраться в данном вопросе и учить первокурсников писать модули к своей программе (в школе часто преподают именно Pascal).

C++Обертка для вызова функций по их адресу из песочницы

Доброго времени суток!
Было дело — делал я интерфейс для работы с модулями для USB от FTDI. Пришлось изрядно повозиться с подключением DLL-интерфейса. Разочаровавшись в возможностях автоматической линковки Microsoft Visual Studio 2008 (UPD: потом я разобрался с этой темой), я решил это делать вручную. По ходу дела задолбался очень надоело вручную подключать несколько десятков функций. И тогда я обратился к Google, C++ и шаблонам. И если подключение DLL в стиле C++ вопросов не вызвало, то удобный вызов подключенных функций в стиле «Error = FT_Open (Num, &_Handler)», где FT_Open- объект, удался не сразу. Итог (для таких вот функций) — под катом. Если вкратце — я сделал обертку вокруг указателя на функцию.

Персональные блоги C# to Java (вызов C# dll из Java)

Доброго времени суток!
Помучив немного хабра поиск не нашел подобных тем, в связи с чем создал свою.

Немного лирики:
Имеем шарповскую библиотеку, в которой лежат необходимые для работы методы. Необходимо этими методами воспользоваться из Java программы.

Персональные блоги .Net и Navision 5.0 — Дружба Навек

Завязка.


И так, здравствуйте.
Работая в конторе, которая занимается внедрением такой штуки, как Ms Dynamics Nav пришлось, столкнуться с одной проблемой, решение которой средствами самого Навика (позволю себе столь фамильярное обращение), было невозможным.
Суть проблемы такова:
внедряя систему в предприятие, которое занимается переводом, встала жесткая проблема с названиями файлов, так как требования гласили, что название, которым был наречен исходный файл, должно полностью соответствовать названию, которое получит уже переведенный файл. При всем при этом, заказчик требовал записи файлов в базу данных MS SQL. Так как навик ооочень далек от юникода, то все встроенные функции работы с файлами коверкали название, убирая умляуты, аксанты и прочие элементы европейского алфавита.
Для решения сией проблемы была поставлена задача написать dll-ку, которая будет записывать в базу данных файлы с корректными названиями. А затем, по требованию возвращать эти файлы из базы данных в файловую систему. При всем при этом возникла проблема с загрузкой больших файлов, поэтому, опять-таки, было принято волевое решение об использовании в MS SQL такой вещи, как FILESTREAM.

DIY или Сделай СамУправление самодельным USB-HID светодиодом, c помощью GUI оболочки на .NET

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