我正在使用MinGW工具链构建一个Windows动态库.
为了构建这个库,我静态地链接到提供API的其他2,我有一个.def文件,我写了我想要在我的库中导出的唯一符号.
问题是GCC正在导出所有符号,包括我链接到的库中的符号.反正告诉链接器只是导出def文件中的符号?
我知道有选择,--export-all-symbols但似乎没有相反的选择.
现在,构建脚本的最后一行具有以下结构:
g++ -shared CXXFLAGS DEFINES INCLUDES -o library.dll library.cpp DEF_FILE \
OBJECT_FILES LIBS -Wl,--enable-stdcall-fixup
Run Code Online (Sandbox Code Playgroud)
编辑:在关于链接器的文档中,它表示这--export-all-symbols是默认行为,并且如果您提供def文件时未明确使用该选项则禁用它,除非它没有; 无论如何,第三方库中的符号正在导出.
编辑:添加选项--exclude-libs LIBS或–exclude-symbols SYMBOLS不阻止导出库中的符号.