小编Jam*_* R.的帖子

如何告诉MinGW链接器不要导出所有符号?

我正在使用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不阻止导出库中的符号.

c++ windows dll gcc g++

13
推荐指数
2
解决办法
1万
查看次数

标签 统计

c++ ×1

dll ×1

g++ ×1

gcc ×1

windows ×1