У меня есть MS C / C ++ статически связанный релиз exe (без отладочной информации на нем), что не экспортирует ни одного символа, но при просмотре с помощью шестнадцатеричного просмотра я вижу такие вещи, как
.?AVElxInterface@@
.?AV?$CBufferRefT@H@@
.?AV?$CBufferT@H@@
.?AV?$CBufferRefT@PAVElxInterface@@@@
конечно, они являются искаженными именами определенных классов / членов, предоставляемых внутренними модулями C ++.
почему они там? как можно избежать их разоблачения?
Лично я не вижу смысла слишком скрывать эти данные, поскольку они не дают подсказок людям, которые рассматривают их, как использовать эти символы для совершения чего-то «плохого». Однако, если это действительно огромная проблема для вас, то есть вы боитесь, что вас каким-то образом перепроектируют, тогда вы можете выбрать запутывание кода. Например, Семантические дизайны предложить продукт для этих целей и заявить, что он высокого качества. У меня никогда не было возможности попробовать это самому. Имейте в виду, что это коммерческий.
Других решений пока нет …