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