Перенос кода Unix с функцией symlink () в Windows

Я портирую код C / C ++ из Unix в Windows, в котором используется функция symlink ().

Насколько я понимаю, в последних файловых системах Windows есть эквивалент символических ссылок.

Каким будет лучший / самый переносимый способ заменить функцию symlink (), чтобы один и тот же код работал на обеих платформах?


person Gene Vincent    schedule 24.06.2011    source источник
comment
Вы можете использовать NTFS-соединение даже в более старых версиях Windows, Win2k, я полагаю, возможно, даже в NT4.   -  person David Heffernan    schedule 24.06.2011


Ответы (3)


Начиная с Windows Vista есть функция для создания настоящих символических ссылок: CreateSymbolicLink

Обратите внимание, что соединения, упомянутые в других ответах, поддерживают только каталоги, и даже с более новой функцией символические ссылки Windows требуют, чтобы вы указали, является ли цель каталогом или файлом. Таким образом, вы не обязательно сможете получить простую "заменяющую" функцию symlink().

person Random832    schedule 24.06.2011

Базовая технология в Windows называется Точки соединения. Библиотека файловой системы Boost является кросс-платформенной и может создавать символические ссылки:

http://www.boost.org/doc/libs/1_46_1/libs/filesystem/v3/doc/reference.html#create_symlink

person Anders Abel    schedule 24.06.2011
comment
@Timo Geusch: Спасибо, что обновили ссылку на последнюю версию - я как раз был в пути, когда вы внесли свою правку. - person Anders Abel; 24.06.2011

Переходы кажутся ответом от similar вопросы.

person Bradley Swain    schedule 24.06.2011