Вопросы по теме '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 просмотров
schedule
19.06.2022
искаженное имя на 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