Профиль: Аноним (вход | регистрация) неRU opennet.me  
OpenNET

[ новости /+++ | форум | теги |    ]

Представлена библиотека WinCore для работы Win32-программ в Linux и macOS

06.10.2026 18:14 (MSK)

Проект WinCore развивает слой совместимости с Win32/WGL, позволяющий компилировать код Windows-программ, написанный на C/C++ с использованием классического API Win32, для запуска в Linux и macOS. WinCore перехватывает классические обработчики Win32 и использует кросс-платформенные бэкенды для отрисовки через SDL3 или SDL2. Код написан на C++ и распространяется под лицензией LGPLv3.

Проект стал результатом переосмысления библиотеки LDL, того же автора, который пришёл к выводу, что вместо проектирования очередного API, логичнее взять проверенный временем процедурный интерфейс Win32 API и сделать его переносимым на разные ОС и устройства. Идея в том, что код пишется по правилам Win32, но нативно компилируется и работает в Windows, Linux и macOS.

Библиотека написана на строгом C++98 для максимальной переносимости, но экспортирует чистые заголовочные файлы C89, что гарантирует обратную совместимость и позволяет легко делать биндинги к Rust, Zig, Python и другим языкам через C FFI. На данный момент добавлено 2 бэкенда - SDL2 и SDL3. В будущем планируется добавить бэкенды для XLib и Wayland.

Автор не ставит цели, эмулировать все возможности Windows и фокусируется только на подсистемах для мультимедиа и движков. В настоящее время реализовано 5 функций Kernel32.dll (управление модулями, системное время и задержки), 25 функций User32.dll (создание окон, циклы сообщений, позиция курсора и обработка ввода), 5 функций Gdi32.dll (выбор пиксельного формата, вывод битмапов и переключение буферов) и 4 функции Opengl32.dll (создание, удаление и активация контекстов WGL).



  1. Главная ссылка к новости (https://github.com/JordanCpp/W...)
  2. OpenNews: Релиз графической библиотеки LDL 0.3, оптимизированной для маломощных систем
  3. OpenNews: Опубликована мультимедийная библиотека LDL, оптимизированная для маломощных систем
  4. OpenNews: Проект SDL3Lite развивает версию библиотеки SDL3 с поддержкой старых систем
  5. OpenNews: Доступен порт GTK+ 1.3 для Windows 11
Автор новости: JordanCpp2
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/66412-wincore
Ключевые слова: wincore, ldl
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (32) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 21:17, 06/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/–
    Программы на win32 api остались в 95 году, у них есть примеры, где это можно применить? Опять нейронки?
     
     
  • 2.3, JordanCpp2 (?), 21:22, 06/10/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/–
    Для написания движков, графических утилит. Портировпния старых игр. Но на данный момент, поддержка winapi ограничена.
     
  • 2.8, warlock66613 (ok), 21:31, 06/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Почти все программы под Windows в конечном счёте используют Win32 API. Может вы перепутали, потому что думаете, что в 64-битных Windows Win64 API? Нет, такого в природе нет.
     
     
  • 3.10, Аноним (1), 21:34, 06/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Нет, я думаю, что в венде больше 40 штатных тулкитов сбоку от винапи и конкретно винапи ими либо не используется, либо используется минимально (например, параметры окна задают). И любая прогпамма выпущенная после 95 года не будет зависеть от конкретно винапи.
     
     
  • 4.20, Ivan_83 (ok), 21:48, 06/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    > И любая прогпамма выпущенная после 95 года не будет зависеть от конкретно винапи.

    Я как то слабо себе представляю такое, хотя писать начал в 2003 и закончил году в 2016 под венду то.
    Насколько я знаю, там есть вот эти оконные винапи либо ты берёшь опенгл/директХ и дальше там сам внутри рисуешь.
    Но даже так ты остаёшься внутри "вин апи" пространства и его оконной части, как минимум windowsstation держит весь твой сеанс внутри desktop (если правильно помню названия).

    А всё что не опенгл/директХ - оно оперирует внутри именно что оконными винапи, и не важно скрыто это за слоями абстракций или нет.

     
     
  • 5.23, Аноним (1), 21:51, 06/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    окна это меньшая из проблем при портировании
     
  • 4.34, warlock66613 (ok), 22:23, 06/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Нет, никаких "сбоку" в винде нет, кроме упомянутых DirectX/OpenGL. Единственный способ не использовать WinAPI — использовать ядерное API, но программы на ядерном API большая редкость.
     

  • 1.2, Ваня фанат СПО из подмосковья (?), 21:20, 06/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/–
    > написанный на C/C++

    привет из 90х

     
     
  • 2.4, JordanCpp2 (?), 21:25, 06/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    На первый взгляд да 90-ые. Но это один API, для инициализации, окна, событий, работы с gl, в будущем с vk. И библиотека имеет поддержку нескольких бэкендов. Проще портировать не только на другие библиотеки, а на другие ос, новые или старые.
     

  • 1.5, JordanCpp2 (?), 21:26, 06/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/–
    Добавьте пожалуйста в тему несколько скриншотов с гитзаьа для визуализации. Они как раз ламповые. Просто что бы показать, что проект в активной разработке и уже работает базовый функционал.
     
  • 1.6, Аноним (6), 21:27, 06/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/–
    Чем это лучше вайна?
     
     
  • 2.9, JordanCpp2 (?), 21:33, 06/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Вайн нужен для бинарной трансляции. Данная библиотека работает на уровне исходников.

    Нужно с этой библиотекой собрать winapi приложение.

     
     
  • 3.16, Gentoofan (?), 21:43, 06/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    а что насчёт https://gitlab.winehq.org/wine/wine/-/wikis/Winelib-User%27s-Guide?
     
     
  • 4.22, Аноним (22), 21:49, 06/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    > а что насчёт
    > Winelib

    Насчет этого автор тоже не в курсе. 👍

    Winelib is a development toolkit which allows you to compile your
    Windows applications on Unix.
    Most of Winelib code consists of the Win32 API implementation

     
  • 3.17, Аноним (22), 21:45, 06/10/2026 [^] [^^] [^^^] [ответить]  
  • –2 +/–
    > Вайн нужен для бинарной трансляции. Данная библиотека работает на уровне исходников.

    "работает на уровне исходников" - это что такое, лол? Вы о динамической линковке (которая как раз и применяется в WinAPI/Wine) ничего не слышали, да?

    > Нужно с этой библиотекой собрать winapi приложение

    Нет, не нужно, ибо winapi приложения уже и так работают в Wine без каких-либо перекомпиляций.

    Скажи спасибо МС за самый стабильный API для Линукса, лол.

     

  • 1.7, Аноним (7), 21:29, 06/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/–
    очиридной реактос получается штоли? тока чет мало функций пальцев рук и ног хватит. памочь не мешало-бы товарищу, хатя думаю нейроночка лихко справится.
     
     
  • 2.11, JordanCpp2 (?), 21:35, 06/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Нет не реактос, это просто библиотека стимулирующая winapi, функции и функционал. Это нужно, что портировать или писать игры софт используя winapi и легко портировать под разные известные бэкенды SDL, SFML или нативно под xlib и wayland.

    Код будет работать одинаково везде, без переписывания. Цель в этом.

     
     
  • 3.13, Аноним (22), 21:37, 06/10/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/–
    Чувак, для этого уже изобрели Wine.
     

  • 1.12, Аноним (22), 21:36, 06/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/–
    > Проект стал результатом переосмысления библиотеки LDL, того же автора, который пришёл к выводу...

    ...что настало время очередного нейрослоп-проекта, азазазаза!

    > логичнее взять проверенный временем процедурный интерфейс Win32 API и сделать его переносимым на разные ОС и устройства

    Автор, алё, Wine уже много лет как существует.

     
     
  • 2.15, Ivan_83 (ok), 21:41, 06/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    wine для запуска готовых бинарников.
    А тут ты можешь взять эту либу и вместо гтк/кт/вихвиджетов и прочего шлака сделать гуй. Либо наверное какие то примитивные проги уже сейчас собрать нативно под линухом.

    Правда учитывая объявленные автором числа реализованного то даже хэлловрот будет сложновато собрать.

     
     
  • 3.18, Аноним (22), 21:47, 06/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > wine для запуска готовых бинарников

    Вот именно: даже пересобирать не нужно.

    > А тут ты можешь взять эту либу и вместо гтк/кт/вихвиджетов и прочего шлака сделать гуй

    Нет, не могу, потому что автор осилил вон полторы функции из всего WinAPI.

     
     
  • 4.21, JordanCpp2 (?), 21:49, 06/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Я осилил базовые функции для написания 2d,3d движка. Дальше будет больше. Этой новостью я ещё ищу контрибуторов.
     
     
  • 5.25, Аноним (22), 21:52, 06/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > Я осилил базовые функции для написания 2d,3d движка

    Во-первых, зачем тебе WinAPI для какого-либо движка, при наличии SDL и подобных либ?

    Во-вторых, ты что, правда еще и NIH 3д движок собираешься писать? 🤦

     
     
  • 6.27, JordanCpp2 (?), 21:57, 06/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Так в этом суть, что зависимость только от Winapi, но работать он может на всех версиях SDL 1,2,3. Sfml, raylib и других бэкэндах.
     
     
  • 7.32, Аноним (22), 22:12, 06/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > Так в этом суть, что зависимость только от Winapi, но работать он может на всех версиях SDL 1,2,3. Sfml, raylib и других бэкэндах.

    Адекватные люди делают как раз наоборот: скрывают платформоспецифичные API под SDL и им подобными. Дабы скрыть и обойти ограничения и баги этих поюлатформоспецифичных API, предоставив одинаковое поведение на всех платформах.

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

     
  • 4.24, Ivan_83 (ok), 21:51, 06/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    > Вот именно: даже пересобирать не нужно.

    А вот я бы хотел нативно чтобы был WinAPI для гуя на "линухе", чтобы можно было и нотепад++ собрать и своё что то налабать.
    гтк мне не нравится, кт даже пробовать не хочу.

    > Нет, не могу, потому что автор осилил вон полторы функции из всего WinAPI.

    Так репе двое суток всего.

     
     
  • 5.26, Аноним (22), 21:55, 06/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    >> Вот именно: даже пересобирать не нужно.
    > А вот я бы хотел нативно чтобы был WinAPI для гуя на "линухе",

    Wine и так нативный. Он не поверх Gtk/Qt/etc. И Notepad++ можно собрать, и вообще написать виндовую прогу с нуля.

    Хз, что тебе еще для счастья нужно.

     
  • 3.19, JordanCpp2 (?), 21:47, 06/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Да, сейчас поддержка именно мультимедиа части, окна, события, ввод, инициализация gl, и зачатки GDI. Дальше потоки в упрощено модели. То есть один поток на окно, без ipc между окнами как в оригинальном win32. Остальные примитивы это рисунмые объекты.

    Этого хватит для 90% софта. Остальное слишком глубоко работает с win32.

     
     
  • 4.28, Ivan_83 (ok), 22:00, 06/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Так нужен хотя бы базовый набор контролов: прогрессбар, текстбокс, комбобокс, листбокс, кнопка. Меню, тулбар, прогресс бар.
    Поддержка сабкласинга.
    Ещё неплохо бы поддержку диалогов из ресурсов и вообще инструментарий какой то чтобы эти ресурсы компелять, хотя бы окна с иконками и может ещё что то.

    Без этого всего даже хэлловрот не соберётся, тот что был в вижалс++ 6 версии в темплейтах.

    Меня всегда останавливал объём работы и вопросы лицензионности.
    Я ещё помню сколько сотен там всяких WM_ сообщений было и что для каждого контрола ещё наверное по сотне своих специфичных сообщений.

    GL то прекрасно и без этого портируется.

     

  • 1.14, Ivan_83 (ok), 21:39, 06/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/–
    Клёво, жаль только что внутри кресты, а учитывая что это 98 - то не понятно зачем.

    Тоже много думал над чем то подобным, но времени не особо притом что работы там куча.

    Ещё не понятно не наложет ли МС свою DCMA лапу, а то оракл с кем то там долго судился за заголовочники джавы или что то такое.

    Интересно как скоро можно будет собрать с этим Miranda NG - они давно хотели портироватся, но проект состоит наверное на 80% из WinAPI кода.

    Хотелось бы увидеть какие то реальные проекты собранные под не венду, типа Notepad++ или ещё что то.

    Да, там же потом придётся работу с сокетами тоже делать, вот эти все WSA*** и через оконные сообщения в том числе тоже. А то многие проги не портанутся :)

     
     
  • 2.29, Ананоним (?), 22:00, 06/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > Интересно как скоро можно будет собрать с этим Miranda NG - они давно хотели портироватся, но проект состоит наверное на 80% из WinAPI кода.

    Кто им мешает написать функции-переходники для работы на других платформах как в этой библиотеке? Иди типа если протитип функции написал кто-то в Микрослоп, то уже всё, хана, капирасты задрючат по судам, если они реализуют свои функции для таких прототипов?

     
  • 2.31, JordanCpp2 (?), 22:02, 06/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    C++ 98 для поддержки обширного числа ос новых, старых, а так же железа. Код максимально прост, не перегружен фичами. На си это бы все выглядело сложнее.

    С++ 98, собирается любым новым и старым компилятором, потому это большой плюс для разработки и поддержки разных компиляторов.

     
     
  • 3.33, Ivan_83 (ok), 22:15, 06/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    MessageQueue и WindowManager у вас только крестовые функции из либ юзают, не вижу сложностей их не юзать а взять что то другое из С либ или притащить/написать.

    DWORD GetTickCount();
    void Sleep(DWORD dwMilliseconds);
    Можно было и не тягать из SDL а реализовать внутри на POSIX API.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    XSQUARE
    Inferno Solutions
    Hosting by Hoster.ru
    Хоcтинг: