Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在Visual Studio中构建静态库时隐藏符号_C_Visual Studio_Ide_Static Libraries - Fatal编程技术网

C 在Visual Studio中构建静态库时隐藏符号

C 在Visual Studio中构建静态库时隐藏符号,c,visual-studio,ide,static-libraries,C,Visual Studio,Ide,Static Libraries,我正在寻找一种在VisualStudio中构建的静态库中隐藏符号的方法。我已经能够在clang和gcc中做到这一点,但我不确定是否有办法在VS中做到这一点 我正在构建一个静态库parentlib,它需要在Linux(使用gcc)、OSX(使用clang)和Windows(使用visualstudio编译器)上构建。该库使用其他3个库:childliba、childlibb、childlibc 我有一个用于parentlib的API,我只希望在库中公开与该API相关的符号。例如,如果有人运行了nm

我正在寻找一种在VisualStudio中构建的静态库中隐藏符号的方法。我已经能够在clang和gcc中做到这一点,但我不确定是否有办法在VS中做到这一点

我正在构建一个静态库parentlib,它需要在Linux(使用gcc)、OSX(使用clang)和Windows(使用visualstudio编译器)上构建。该库使用其他3个库:childliba、childlibb、childlibc

我有一个用于parentlib的API,我只希望在库中公开与该API相关的符号。例如,如果有人运行了
nmparentlib
,他们将看不到childlib(abc)中的任何符号

在使用clang/gcc构建库时,我这样做的方式是:

clang -exported-symbols-list <text_file_with_parentlib_api_symbols> ...
gcc --globalize-symbols=<text_file_with_parentlib_api_symbols> ...
clang-导出的符号列表。。。
gcc--全球化符号=。。。
现在,文本文件中未列出的任何符号都不会在结果库中成为全局符号


有没有办法在VisualStudio中设置这种类型的隐藏符号?我环顾四周,询问了多名同事,但似乎没有人认为这是可能的。

我认为这更多的是关于微软的PE/COFF格式(以及
链接
工具)的问题,而不是关于C或VS的问题。有一个73页(200 KB)长的规范
pecoff.docx
,这看起来是一个很好的出发点,看看是否有可能达到你想要的效果。(我找不到有关
-导出符号列表
-全球化符号
的文档,顺便说一句)