Вопросы по теме 'name-mangling'

Зачем нам нужен extern C {#include ‹foo.h›} в C ++?
Зачем нужно использовать: extern "C" { #include <foo.h> } В частности: Когда мы должны его использовать? Что происходит на уровне компилятора / компоновщика, что требует от нас его использования? Как с точки зрения...
85150 просмотров
schedule 19.11.2022

Как мне остановить изменение имени экспортируемой функции моей библиотеки DLL?
Я пытаюсь создать DLL, которая экспортирует функцию под названием «GetName». Я бы хотел, чтобы другой код мог вызывать эту функцию, не зная искаженного имени функции. Мой заголовочный файл выглядит так: #ifdef __cplusplus #define EXPORT extern...
37473 просмотров
schedule 12.04.2023

вопросы об изменении имени в C ++
Я пытаюсь изучить и понять искажение имен в C ++. Вот несколько вопросов: (1) Из devx Когда глобальная функция перегружена, сгенерированное искаженное имя для каждой перегруженной версии уникально. Изменение имен также применяется к...
24011 просмотров
schedule 23.07.2022

Спецификация extern const linkage, по-видимому, игнорируется G++
У меня есть ситуация, когда создается кодовая база C с компилятором C++, который параллелен этому: lib.h extern int const values[2] = {1, 2}; lib.c #include "lib.h" main.c #include <iostream> extern int const...
369 просмотров
schedule 19.04.2023

Изменение имени C ++ в C
В языке C не используется изменение имен, как в C ++. Это может привести к незаметным ошибкам, когда прототип функции объявлен по-разному в разных файлах. Простой пример: /* file1.c */ int test(int x, int y) { return y; } /* file2.c */...
1183 просмотров
schedule 06.09.2022

Правильное использование ctypes для вызова _Py_Mangle?
Пока я сидел на грибе и размышлял о тонкостях написания функции для реализации алгоритма искажения имени Python, мне в голову пришла невероятно лучшая идея. Почему бы не использовать рецепт, уже встроенный в язык, для достижения такой цели? Поэтому...
284 просмотров

искаженное имя на C
Насколько я помню, искажение имени не используется в C, что является своего рода функцией, которую мы используем, используя функцию C для ABI (двоичный интерфейс приложения). Но недавно я читал эту статью об изменении имени в C...
770 просмотров
schedule 22.10.2022

c++filt недостаточно агрессивен для некоторых искаженных имен в файлах PTX.
Я фильтрую свой скомпилированный PTX через c++filt, но он только меняет некоторые имена/метки, а некоторые оставляет как есть. Например, это: func (.param .b32 func_retval0) _ZN41_INTERNAL_19_gather_bits_cpp1_ii_56538e7c6__shflEiii(...
240 просмотров
schedule 15.07.2023

Изменить только результат метода и загрузчик класса NoSuchMethod
Мы начали с одной банки с одним классом с одним методом, например: boolean foo( int bar ) { ... } Однако результат этого метода был бесполезен (на самом деле всегда истинен) и клиенты, которые использовали этот результат для чего-либо,...
75 просмотров
schedule 26.10.2023

Почему у меня есть две реализации деструктора в моих выходных данных сборки?
И objdump моего файла .o показывает, что у меня есть два разных деструктора для одного и того же класса. Почему? Disassembly of section .text._ZN1AD0Ev: 0000000000000000 <_ZN1AD0Ev>: 0: 53 push %rbx 1: be...
3469 просмотров
schedule 23.03.2022

Почему изменение имени не влияет на основную функцию в C ++?
Компилятор C ++ часто искажает имена функций для поддержки многих функций. Программист может подавить изменение имени по умолчанию, используя способ extern "C" . Однако почему int main(int, char **) не затронут никогда? // test.cpp int...
513 просмотров
schedule 30.05.2023

Почему искажения C++ в Linux не уникальны
Пожалуйста, рассмотрите следующую программу C++: int _Z5func2v; void func2() { } Когда вы пытаетесь скомпилировать его, он терпит неудачу: $ g++ test.cpp -c /tmp/cc1RDxpU.s: Assembler messages: /tmp/cc1RDxpU.s:13: Error: symbol...
69 просмотров
schedule 31.03.2023

Как принудительно включить cxx11 ABI в Red Hat?
Я создаю небольшую библиотеку .so на Ubuntu 16.04 и Red Hat 7, используя gcc 7.3. Когда я проверяю имена символов экспорта с помощью команды nm, я обнаруживаю, что библиотека, скомпилированная в Ubuntu, использует ABI cxx11, а библиотека,...
293 просмотров
schedule 18.07.2023

Как я могу заставить atos печатать искаженные имена?
Я запускаю atos для обозначения адресов с помощью -arch arm64 -o MyApp -s <slide> -f <symbol file> . Однако он печатает такие строки, как type metadata accessor for GradientView (in MyApp) (<compiler-generated>:0) . Я бы хотел,...
37 просмотров
schedule 13.12.2022