Я хочу запустить пример плагина для CLANG / LLVM.В частности llvm\tools\clang\examples\PrintFunctionNames
.Мне удалось его построить, и я вижу PrintFunctionNames.exports
, но я не думаю, что визуальные студии его поддерживают.Файл просто _ZN4llvm8Registry*
.Я понятия не имею, что это такое, но я подозреваю, что его пространство имен llvm, класс Registry, который определяется как
template <typename T, typename U = RegistryTraits<T> >
class Registry {
Я подозреваю, что ключевая строка находится в конце файла примера
static FrontendPluginRegistry::Add<PrintFunctionNamesAction> X("print-fns", "print function names");
print-fns - это имя, а 2-й параметр - деск.Когда я пытаюсь загрузить / запустить DLL через
clang -cc1 -load printFunctionNames.dll -plugin print-fns a.c
, я получаю сообщение об ошибке, не найдя print-fns
.Я подозреваю, потому что статическая переменная никогда не инициализируется, поэтому она никогда не регистрирует плагин.Неправильное имя DLL приведет к ошибке при загрузке модуля msg.
Я создал файл def и добавил его в свой проект.Это скомпилировано, но до сих пор не повезло.Вот мой файл определения
LIBRARY printFunctionNames
EXPORTS
X DATA
Как мне зарегистрировать плагин или заставить этот пример работать?