C ++ [[GNU :: Visibility ("по умолчанию")]] VS __declspec (dllexport) в Windows и LinuxC++

Программы на C++. Форум разработчиков
Anonymous
C ++ [[GNU :: Visibility ("по умолчанию")]] VS __declspec (dllexport) в Windows и Linux

Сообщение Anonymous »

Мне нужно было сделать некоторые общие библиотеки в C ++, и я использовал Linux в качестве операционной системы разработчика. Я знаю, что мне нужно сделать символы видимыми, если я хочу загрузить их через dlsym /

Код: Выделить всё

LoadLibrary
. Итак, в Linux все мои символы следовали этому шаблону: < /p>

Код: Выделить всё

extern "C" [[gnu::visibility("default")]] void f();
< /code>

Я использовал Clang с включенным C ++ 11, и я смог загрузить f < /code> в мою хост -программу. Когда я перешел в Windows, я использовал GCC 4.8.2 с включенным C ++ 11, и этот шаблон работал и на Windows Machine с LoadLibrary 
. (Мне нужно было использовать C ++ 11 для нового синтаксиса атрибутов). Я знаю, что в Windows мне нужно использовать __declspec (dllexport) для экспорта символов из общей библиотеки. Так что теперь? Является ли __declspec (dllexport) больше не требуется? ifdef s для конкретных целей?

Подробнее здесь: https://stackoverflow.com/questions/213 ... -and-linux

Вернуться в «C++»