C++ → DynLib: библиотека для создания и работы с DLL из песочницы
Библиотека DynLib предоставляет удобные средства для разработчиков, использующих межмодульное взаимодействие (EXE<->DLL, DLL<->DLL) в своих проектах, и значительно сокращает время и количество кода.DynLib была написана для внутреннего использования одним из наших сотрудников SergX и стала неотъемлемым инструментом разработки. Под катом делимся результатами.
Delphi → Использование dll библиотек математического ядра системы Matlab в приложениях Delphi из песочницы
Матлаб для математика — это… Это не имеет выражения в словах. Это просто наше все. Мощь, предоставляемая этим пакетом математического ПО просто ошеломляет. Если что-то нельзя сделать в матлабе, то это, скорее всего, нельзя сделать на компьютере вообще. А еще вероятнее, что Вы просто не знаете, как это делать.А теперь предадимся мечтам: как бы хотелось иметь всю эту мощь под рукой в родной и милой сердцу Delphi, например… Нет ничего проще!
Данная статья затрагивает лишь малую часть такой обширной темы, как взаимодействие разрабатываемых прикладных программ с сервисами, предлагаемыми Матлабом. Помимо описанного тут, существуют и другие способы воспользоваться услугами этого элитного математического пакета. Описанный способ хорош тем, что при наличии всех нужных dll библиотек, сам Матлаб уже не нужен. К тому же, данный способ относительно неплох в плане производительности. Минус его в том, что приходится таскать за собой пак библиотек почти на 10 Мб. Также не доступны функции тулбоксов Матлаба.
Математическое ядро Матлаба до xx версии (ну забыл я, до какой!) было сосредоточено в пакете dll библиотек. В этих библиотеках хранятся функции для выполнения самых различных вычислений. Если установить Матлаб без единого тулбокса и без Симулинка, то все вычисления, которые можно выполнить в командной строке среды, реализованы через функции из этих самых библиотек. Помните Pascal Numerical Toolbox? Так вот он — игрушечная лопатка, по сравнению с бульдозером Матлаба. А в чем же подвох? Вам придется изрядно потрудиться, чтобы этот бульдозер завести.
dll-библиотеки математического ядра Матлаба до определенной версии употребляются самим Матлабом, поэтому лежат среди исполняемых файлов пакета. В последних версиях самим Матлабом они уже не используются, однако архив с ними все равно поставляется вместе с пакетом (Необходим для работы программ, созданных в Matlab Compiler). Теоретически. Я его так и не нашел. Если хотите воспользоватеься библиотеками ищите их в интернете. Обычно, это файл mglinstaller.exe. И не забудьте поинтересоваться условиями использования — тут я тоже не в курсе. Далее я предполагаю, что библиотеки у Вас уже есть.
Маленькое и незаметное примечание
Данная статья затрагивает лишь малую часть такой обширной темы, как взаимодействие разрабатываемых прикладных программ с сервисами, предлагаемыми Матлабом. Помимо описанного тут, существуют и другие способы воспользоваться услугами этого элитного математического пакета. Описанный способ хорош тем, что при наличии всех нужных 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 source → Mouse Track — Библиотека MouseTrackAPI
Здравствуйте! Рад сообщить, что проект MouseTrack не канул в лету, а продолжает свое развитие. Кто не понял о чем речь: Статья №1 и Статья №2.
Со времени публикации проекта на code.google.com было сделано немногое (основное время — это учеба, предстоящая сессия, да и здоровье не позволяло много времени проводить за компьютером), а именно написана библиотека MouseTrackAPI.dll.
Со времени публикации проекта на 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- объект, удался не сразу. Итог (для таких вот функций) — под катом. Если вкратце — я сделал обертку вокруг указателя на функцию.
Было дело — делал я интерфейс для работы с модулями для USB от FTDI. Пришлось изрядно повозиться с подключением DLL-интерфейса. Разочаровавшись в возможностях автоматической линковки Microsoft Visual Studio 2008 (UPD: потом я разобрался с этой темой), я решил это делать вручную. По ходу дела
Персональные блоги → C# to Java (вызов C# dll из Java)
Доброго времени суток!
Помучив немного хабра поиск не нашел подобных тем, в связи с чем создал свою.
Немного лирики:
Имеем шарповскую библиотеку, в которой лежат необходимые для работы методы. Необходимо этими методами воспользоваться из Java программы.
Помучив немного хабра поиск не нашел подобных тем, в связи с чем создал свою.
Немного лирики:
Имеем шарповскую библиотеку, в которой лежат необходимые для работы методы. Необходимо этими методами воспользоваться из Java программы.
Персональные блоги → .Net и Navision 5.0 — Дружба Навек
Завязка.
И так, здравствуйте.
Работая в конторе, которая занимается внедрением такой штуки, как Ms Dynamics Nav пришлось, столкнуться с одной проблемой, решение которой средствами самого Навика (позволю себе столь фамильярное обращение), было невозможным.
Суть проблемы такова:
внедряя систему в предприятие, которое занимается переводом, встала жесткая проблема с названиями файлов, так как требования гласили, что название, которым был наречен исходный файл, должно полностью соответствовать названию, которое получит уже переведенный файл. При всем при этом, заказчик требовал записи файлов в базу данных MS SQL. Так как навик ооочень далек от юникода, то все встроенные функции работы с файлами коверкали название, убирая умляуты, аксанты и прочие элементы европейского алфавита.
Для решения сией проблемы была поставлена задача написать dll-ку, которая будет записывать в базу данных файлы с корректными названиями. А затем, по требованию возвращать эти файлы из базы данных в файловую систему. При всем при этом возникла проблема с загрузкой больших файлов, поэтому, опять-таки, было принято волевое решение об использовании в MS SQL такой вещи, как FILESTREAM.
DIY или Сделай Сам → Управление самодельным USB-HID светодиодом, c помощью GUI оболочки на .NET

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