name-mangling相关内容
使用我的类的当前实现,当我尝试使用类方法获取私有属性的值时,我得到None作为输出。你知道我哪里错了吗? 代码 from abc import ABC, abstractmethod class Search(ABC): @abstractmethod def search_products_by_name(self, name): print('fo
..
..
我发现了许多类似的问题(例如 这个,那个 或 this),但它们都没有帮助我解决我的问题.我有一个 *.so 文件(来自 gnss-sdr 的核心),如下所示: $nm libgnss_system_parameters_dyn.so |c++filt |grep Gps_Eph 包含符号Gps_Ephemeris::Gps_Ephemeris(),应该是构造函数. 我写了一些最少的代码
..
类 foo{上市:无效say_type_name(){std::cout
..
有什么办法可以从 g++ 中的 demangled name 中取回 mangled name. 例如,我的名称是 func(char*, int),我应该怎么做才能得到重整的名称,即 _Z4funcPci? 我的问题是特定于 g++ 的. 解决方案 你可以简单地使用 g++ 编译一个带有你需要的签名的空函数并从中提取名称.例如: echo "int f1(char *, i
..
我正在编写一个需要访问私有变量的装饰器并发现了这种差异.谁能解释一下? (Python 2.5) 命名修改对类中定义的属性按预期工作: >>>类测试器(对象):... __foo =“嗨">>>t = 测试者()>>>t._Tester__foo'你好' 实例属性不起作用(这是我们应该做的正确的方式?) >>>类测试器(对象):... def __init__(self):...
..
我正在尝试学习和理解 C++ 中的名称修饰.以下是一些问题: (1) 来自 devx 当一个全局函数被重载时,每个重载版本生成的重载名称都是唯一的.名称修饰也适用于变量.因此,具有相同用户指定名称的局部变量和全局变量仍然会得到不同的重命名. 除了重载函数和同名全局和局部变量之外,还有其他使用名称修饰的示例吗? (2) 来自 维基 当语言允许不同的实体使用相同的标识符命
..
我正在尝试学习和理解 C++ 中的名称修饰.以下是一些问题: (1) 来自 devx 当全局函数重载时,每个重载版本生成的重整名称都是唯一的.名称修饰也适用于变量.因此,具有相同用户给定名称的局部变量和全局变量仍然获得不同的重整名称. 除了重载函数和同名全局和局部变量之外,还有其他使用名称修改的例子吗? (2) 来自 维基 如果语言允许使用相同标识符命名不同实体,只要
..
我试图为 dll 导出一个简单的测试函数,以便与指定调用约定的应用程序(仅供参考:mIRC)一起使用: int __stdcall test_func(HWND mWnd, HWND aWnd, char *data, char *parms, BOOL show, BOOL nopause) 现在,要从应用程序调用它,我将使用 test_func 但我注意到由于名称修改,它并不像我想象的那么
..
如何列出从 .so 文件导出的符号?如果可能,我还想知道它们的来源(例如,它们是否是从静态库中提取的). 我使用的是 gcc 4.0.2,如果这有区别的话. 解决方案 列出符号的标准工具是 nm,你可以像这样简单地使用它: nm -gD yourLib.so 如果您想查看 C++ 库的符号,请添加“-C"选项,该选项可对符号进行解构(解构后可读性更高). nm -gDC you
..
我目前正在处理一些日志代码,这些代码应该——除其他外——打印有关调用函数的信息.这应该相对容易,标准 C++ 有一个 type_info 类.这包含 typeid 的类/函数/等的名称.但它被破坏了.它不是很有用.IE.typeid(std::vector).name() 返回 St6vectorIiSaIiEE. 有没有办法从中产生一些有用的东西?就像上面例子的 std::vector 一
..
我之前在这里表明C++函数并不容易代表大会.现在我有兴趣以一种或另一种方式阅读它们,因为 Callgrind 是 Valgrind 的一部分,在组装时显示它们已损坏. 所以我想要么破坏 Valgrind 函数输出,要么破坏函数的程序集名称.有没有人尝试过这样的事情?我正在查看 网站 并发现以下内容: 实现解压缩的代码是 GNU Binutils 包的一部分;参见 libiberty/cpl
..
将 extern "C" 放入 C++ 代码中究竟有什么作用? 例如: extern "C" {无效的 foo();} 解决方案 extern "C" 使 C++ 中的函数名具有 C 链接(编译器不会破坏名称)以便客户端C 代码可以使用仅包含函数声明的 C 兼容头文件链接到(使用)您的函数.您的函数定义包含在二进制格式中(由您的 C++ 编译器编译),然后客户端 C 链接器将使用 C
..
我正在将 32 位应用程序移植到 64 位.该应用程序支持 DLL 插件.不幸的是,每个插件需要具有的强制性功能之一称为 FreeLibrary,这当然与同名的 kernel32 API 冲突.我的插件 API 使用 FreeLibrary 名称的原因是该应用程序源自不同的平台,其中 FreeLibrary 不会与任何操作系统 API 发生冲突. 然而,即使在 32 位 Windows 上使
..
我有一些代码,其中包含以下行 #pragma comment(linker, "/include:_test@12") 当我使用配置类型为 32 位的 C++ Visual Studio 2010 编译代码时,使用此代码的项目工作正常(我也在 32 位 Windows 机器上). 当我将机器更改为 64 位并使用使用 C++ Visual Studio 2010 编译的 x64 配置时
..
首先,我将从我需要在运行时进行名称修改的原因开始. 我需要在 dll 和它的包装器之间建立一个桥梁 命名空间包装器{类 __declspec(dllexport) 令牌{民众:虚拟无效释放(){}};}类 __declspec(dllexport) 令牌{民众:虚空释放(){}}; 这个想法是使用 dumpin 生成所有包含类令牌的 dll 的重整名称,然后再将它们解散. ?r
..
Python 为类方法和属性提供私有名称修改. 是否有任何具体情况需要此功能,还是只是从 Java 和 C++ 继承而来? 请描述一个应该使用 Python 名称修饰的用例(如果有)? 另外,我对作者只是试图防止意外的外部属性访问的情况不感兴趣.我相信这个用例与 Python 编程模型不一致. 解决方案 部分是为了防止意外的内部属性访问.举个例子: 在您的代码中,这
..
C ++编译器经常修改函数名称以支持许多功能.程序员可以使用外部"C" 方式禁止默认名称处理.但是,为什么 int main(int,char **)从未受到影响? //test.cppint max(int a,int b){返回>?a:b;}extern"C" {int min(int a,int b){返回
..
我需要将一些Delphi代码重写为C ++,并且需要链接到动态库 TMLComm2004.dll .事实证明,我们没有任何 .lib 文件,因此我们决定使用以下命令行生成该文件: dumpbin/EXPORTS C:\ Users \ fayard \ Desktop \ TMLComm2004.dll>C:\ Users \ fayard \ Desktop \ TMLComm2004.tx
..
当我使用 __ 创建模块级变量并尝试在类的方法(使用 global 关键字)中访问它时,发生了名称更改. 让我展示一个例子: __ test ='asd'#带有__的模块级别变量类TestClass(object):def测试(自己):全局__testprint(__ test)#尝试访问此变量一个= TestClass()一个测试() 口译员提出了一个错误: NameErro
..