Я создаю динамическую библиотеку Windows с помощью инструментальной комбинации MinGW.
Чтобы создать эту библиотеку, я статически связываюсь с другими 2, предлагающими API, и у меня есть файл .def
, где я написал единственный символ, который я хочу экспортировать в своей библиотеке.
Проблема заключается в том, что GCC экспортирует все символы, включая те из библиотек, к которым я привязываюсь. В любом случае, чтобы сообщить компоновщику просто экспортировать символы в файл def
?
Я знаю, что есть опция --export-all-symbols
, но, похоже, это не так.
В настоящее время последняя строка сборки script имеет следующую структуру:
g++ -shared CXXFLAGS DEFINES INCLUDES -o library.dll library.cpp DEF_FILE \
OBJECT_FILES LIBS -Wl,--enable-stdcall-fixup
EDIT: В docs о компоновщике говорится, что --export-all-symbols
является поведением по умолчанию и что он отключен, когда вы не используете эту опцию явно, если вы предоставляете файл def
, за исключением случаев, когда это не так; в любом случае экспортируются символы в сторонних библиотеках.
EDIT: добавление опции --exclude-libs LIBS
или –exclude-symbols SYMBOLS
не позволяет экспортировать символы из библиотек.