Если вы используете библиотеку JavaScript, рассмотрите Dojo Toolkit, который совместим (после незначительных изменений) с компиляцией расширенного режима Closure Compiler.
Dojo - Библиотека только JavaScript, совместимая с компилятором Closure
Код, скомпилированный с расширенным режимом Closure, практически невозможно перепрограммировать, даже проходя через декоратор, так как вся кодовая база кода (в том числе в библиотеке) обфускается , В среднем он также на 25%.
JavaScript-код, который просто минимизирован (YUI Compressor, Uglify и т. Д.), Легко реверсировать после прохождения через декодер.
Я читал (хорошо просканированный) посредством обсуждения списка разработки. Нет никакого легкого решения.Подводя итоги:
Обертывание заголовочных файлов в объявлении пространства имен
namespace boost_1_36_0 {
#include <boost_1_36_0/boost/regex.hpp>
}
namespace boost_1_35_0 {
#include <boost_1_35_0/boost/shared_ptr.hpp>
}
Определение повышения прежде включая заголовки
#define boost boost_1_36_0
#include <boost_1_36_0/boost/regex.hpp>
#undef boost
#define boost boost_1_35_0
#include <boost_1_35_0/boost/shared_ptr.hpp>
#undef boost
-Dboost=boost_1_36_0
Некоторые внутренние включения заголовочного файла могут быть испорчены, так как этот вид вещи действительно происходит.
#if defined(SOME_CONDITION)
# define HEADER <boost/some/header.hpp>
#else
# define HEADER <boost/some/other/header.hpp>
#endif
Но может быть достаточно легко работать вокруг тех случаев.
namespace boost {..}
с namespace boost_1_36_0 {...}
и затем обеспечивая псевдоним пространства имен. Замените все BOOST_XYZ
макросы и их использование с BOOST_1_36_0_XYZ
макросы. @Josh: В то время как я соглашаюсь с дрожанием, я все еще полагаю, что это - лучший план действий. Иначе связывающиеся проблемы являются уверенностью. У меня была ситуация прежде, где я должен был взломать скомпилированное использование библиотек objcopy
избегать конфликтов определения. Это был кошмар по причинам совместимости платформы, потому что искажение имени работает очень по-другому даже в различных версиях тех же компиляторов (в моем случае, GCC).
У Вас будет мир соединения проблемы, потому что скорректированные имена будут отличаться. И да, я вижу, что Вы знали, что, но это походит, это будет проблема все вокруг.