день добрый ! проясните плз мое понимание следующего: мне нужно при соблюдении нек. условий в моей С++ проге подгрузить модули с реализованными в них С/C++ ф-циями. если условия не были соблюдены то динамической подгрузки этих модулей производить не надо. правильно ли я понимаю, что кроме как через работу c динамической загрузкой DLL (в мире винды) и модулями (*.so), которые мне придется скомпилять отдельно, и реализовать в них свои C/C++ ф-ции, в мире UNIX больше эту задачу никак не решить? если это так, то правильно ли я считаю, что мне придется реализовать как работу с DLL, так и работу с модулями, чтобы достигнуть кросс-платформенности моего приложения? или же можно не опускаться на системный уровень операционных систем, и воспользоваться штатными С/C++ средствами? спасибо за комменты.
в мире винды можно ещё воспользоваться отложенной загрузкой (/DELAYLOAD). то бишь пока хоть одну функцию из указанной dll не вызвал, она и не загрузится. и все заботы по динамической загрузке при этом на компиляторе.
varnie всё что связано с подгрузкой модулей (LoadLibrary(), GetProcAddress()...) живёт вне стандарта C/C++ и сделано по-разному на каждой OS. Но, никто тебе не мешает обернуть эти ф-ции. Т.е. сделать свой cross-platform API.
s0larian +1 причем не так это сложно как кажеться, конечно если этих платформ ограниченное колво... Как вариант, модули сделать в виде скриптов, например на Lua/java.
Есть еще такой вариант. Придумай собственный формат модулей динамической загрузки. К тому же, не понятно, какая именно тебе нужна кроссплатформенность. Если на уровне исходных кодов, то можешь реализовать модули в виде исполняемых файлов (в Windows *.exe).
спасибо за пояснения. мне нужно реализовать на С/C++ "механизм", который бы позволил мне иметь единый интерфейс для загрузки моих С/C++ ф-ций вынесенных в специфические для разных операционных систем библиотеки не нарушая архитектуры моего ООП приложения. чтобы при сборке моей программы под виндами/линуксами я лишь указал бы директиву препроцессора, под какую ОСь я собрался скомпильнуть свою прогу и автоматически использовалась бы соответствующая этой ОС работа по загрузке моих ф-ций. ps: окей, буду копать.