Эквивалент GCC для параметра / INCLUDE Visual Studio

В Visual Studio я могу получить конкретные символы, экспортированные из DLL с помощью / ВКЛЮЧИТЬ (Ссылки с символами силы) Опция линкера. Есть ли эквивалентная опция в GCC?

Я компилирую с -fvisibility = hidden, поэтому по умолчанию символы не экспортируются.

0

Решение

Хотя видимость символов может работать, это не совсем ответ на заданный вопрос. Это не опция компоновщика, и требует изменения исходного кода, что может быть нежелательно. Более или менее эквивалентна карта экспорта, но она доступна только для GCC с GNU linker. Опция командной строки GCC будет

 -Wl,--version-script=a.map

с .map выглядит

 {
global: a;
local: *;
}

больше информации на http://www.akkadia.org/drepper/dsohowto.pdf

1

Другие решения

Один из способов сделать это — использовать __attribute__:

void foo() __attribute__((visibility("default")));

void foo() {
/* Implementation */
}

Это должно переопределить ваш -fvisibility=hidden параметр только для этой функции. Вы также можете сделать это:

class __attribute__((visibility("default"))) my_class {
public:
myClass();
~myClass();

// Other declarations...
};

Это экспортирует весь класс и все объявления, содержащиеся в нем.

1

По вопросам рекламы [email protected]