Добрался до кода. Сделал рефакторинг. Раньше среда была в классе с одним экземпляром (Синглтон, по сути) в глобальной переменной. Но смысла в этом не было, т.к. это лишний указатель в некоторых случаях, а два экземпляра никогда не будет (две интры не запустишь в одном адресном пространстве). Плюс это создавало неудобства в плане доступа к приватным членам.
API тоже был завернут в класс со статическими функциями, но это тоже так себе идея.
В итоге перенёс и то, и другое в отдельные namespace'ы (с вложенными namespace'ами вроде internal и пр.). Для API сделал отдельно функции для экспорта в DLL, отдельно для вызова из интр. И отдельно с основным кодом (которые вызываются из тех двух). Всё с одинаковыми именами, только namespace'ы разные. Так удобнее, ИМХО 😁
Попробовал загрузить DLL'ку извне на Си, плюсах, Delphi и из асма. Всё работает ✌️
Также добавил ещё одну DLL'ку: parallelix_memory для резервирования адресов, если вдруг кто-то захочет сделать обёртку (свой лоадер, так скажем). Х/з зачем, но пусть будет. Заодно потестил кое-что :)
API тоже был завернут в класс со статическими функциями, но это тоже так себе идея.
В итоге перенёс и то, и другое в отдельные namespace'ы (с вложенными namespace'ами вроде internal и пр.). Для API сделал отдельно функции для экспорта в DLL, отдельно для вызова из интр. И отдельно с основным кодом (которые вызываются из тех двух). Всё с одинаковыми именами, только namespace'ы разные. Так удобнее, ИМХО 😁
Попробовал загрузить DLL'ку извне на Си, плюсах, Delphi и из асма. Всё работает ✌️
Также добавил ещё одну DLL'ку: parallelix_memory для резервирования адресов, если вдруг кто-то захочет сделать обёртку (свой лоадер, так скажем). Х/з зачем, но пусть будет. Заодно потестил кое-что :)