LINUX.ORG.RU

Cross platform dll / so


0

1

Всем привет! Подскажите пожалуйста, как можно создать кросс-платформенную .dll / .so библиотеку для linux, windows на С++? Какая разница в использовании либы после? Они же формат даже разный имеют. Как правильно организовать компиляцию такой либы с помощью cmake чтобы потом не было проблем с названиями, компиляторами и т.п.?

Если бинарный, то никак, формат execuatable файла абсолютно разный.

Проблем с бинарной либой между разыми компиляторами может не быть только если это либа на С, на С++ символы манглятся своим компилер-специфичным способом, и совместимости никакой нет.

alex_custov ★★★★★
()

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

anonymous
()

Cmake - ты сам ответил на свой вопрос?

bhfq ★★★★★
()

Можно сделать с mono. Разумеется, оно получится managed и для CLR

yoghurt ★★★★★
()

Перечитал ОП еще раз и появилось ощущение, что ТС сам не понимает, что ему нужно. Поэтому тут же приведу альтернативный ответ: да, грамотно написанный код может быть собран и как dll в винде, и как .so во всяких линаксах

yoghurt ★★★★★
()
Ответ на: комментарий от yoghurt

Возможно неправильно написал, потому что никогда подобным не занимался. Имел ввиду какие различия при написании кода и при компиляции на win и lin будут возникать и как их по человечески учитывать.

Genesis_39
() автор топика
Ответ на: комментарий от Genesis_39

Придерживайся стандарта, и все будет хорошо. О компиляторах позаботится CMake.

JackyTreehorn
()

как можно создать кросс-платформенную .dll / .so библиотеку для linux, windows на С++?

пиши в рамках стандарта. делай сишный интерфейс. не используй специфичных для платформы ф-ый (winapi например). если такая ф-ть нужна, то использую кроссплатформенные либы типа qt или boost (в зависимости от понимания того, что тебе надо).

Какая разница в использовании либы после?

никакой

Как правильно организовать компиляцию такой либы с помощью cmake чтобы потом не было проблем с названиями, компиляторами и т.п.?

с помощью cmake

cmake

//superpuperanon

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.