问题标签 [name-mangling]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linker - 如何实现符号版本控制
我想实现以下目标:
我有多个版本的库。我使用 dlopen() 动态加载最新版本的库。然后我想查看该版本中是否存在特定函数(以及类似的返回类型和参数列表)。如果确实如此,则将其打开,否则将回退到以前的版本进行检查。
我看过一些关于“版本脚本”的帖子,但无法使用它。另外我认为搜索符号表不是一个解决方案,因为它只检查那里的函数名。
c++ - Mingw 的处理/导出问题
我正在使用 Windows 下的 Netbeans 和 MinGW 开发一个共享的 C++ DLL。
我的第一个问题是:MinGW 和 Microsoft Visual C++ 之间的修改会有所不同吗?我读到 mangling 是特定于编译器的 - 是真的吗?我需要使用 MinGW 获得与 MVC++ 相同的修饰,这可能吗?
我发现,使用 Dependency Walker,导出的函数也被视为 C(在我的代码中它们没有导出为 C)。这是否取决于 DepWalker 的限制或出于某种原因 MinGW 正在使我的库导出为 C?(我验证了使用“export C”我不再看到修改,而没有,我看到名称修改(这与我基于 MVC++ 所期望的不同)但我仍然看到“C”图标而不是“C++ ”。
这是链接命令:
g++.exe -static-libgcc -static-libstdc++ -shared -o my.dll -s 1.o 2.o ... n.o other.dll -static
提前致谢并致以最诚挚的问候。
objective-c - 如何在 Objective-C 中获取方法的函数名?
据我所知,一个方法被编译成这样的函数:
是否可以获得选择器的函数名称,以便我可以将该方法作为参数传递给 C 函数,或者这不可能?
c - 全局静态/非静态变量如何在 c 中被破坏?
我可以想象var
函数内的静态变量func
被命名为var@func
,
全局静态和非静态变量呢?
c++ - 用于 Python 的 C++ 名称修饰库
我想在 Python 程序中对 C++ 函数名称进行处理和拆解。有没有类似的东西?我现在搜索了几个小时,也许我在这里很幸运......
c++ - VC++ 防止所有符号名称装饰
我正在开发一个 DLL,它将使用 _stdcall 调用转换从另一种语言中使用(因此没有导入库并包括 dll 的头文件)。问题是 VC++ 似乎总是对其导出的符号进行一些名称修饰。我看到的所有引用都说使用 extern "C" 但这似乎仍然给我留下了一个前导下划线和一个 @ 加上导出名称后的一个数字。
最糟糕的一点是在目标语言中加载扩展 dll 的自动方法本质上是“func_name = GetProcAddress(dll,“func_name”)”所以使用未修饰的名称 GetProcAddress 失败,并且使用修饰的名称它抱怨非法变量名称( @ 不允许) :(
如何让 VC++ 导出完全没有名称装饰的东西?
垃圾箱文件
00011366 _test@8 = @ILT+865(_test@8)
jquery - 使用 jQuery 和 ASP.NET 用户控件时如何处理元素 ID
我在 ASP.NET 中有一些用户控件,我将它们用作简单的 HTML,也就是说,没有任何代码隐藏。
我有一个控件,我有一个具有固定 ID 的元素,我用一些 jQuery 客户端脚本指向它。例如:
这很好用,没有任何问题。但是这样做有一个副作用。事实上,如果我在我的页面上添加相同用户控件的两个实例,我将拥有两个具有相同 ID 的元素。
在您看来,处理这种情况的好方法是什么?
谢谢
c++ - 将 3rd 方库 (libconfig) 与 Qt (C++) 一起使用
我无法让第三方库 (libconfig++) 在 Qt 中工作。
在 Qt 中编译时,我收到错误消息,例如:
等等
在我的 .pro 文件中,我有:
我已将 libconfig++.dll 和 libconfig++.lib 添加到正确的文件夹中。
这个项目成功地使用了另一个 3rd 方库(以类似的方式),所以我认为这不是语法或包含问题。
看起来可能是 C++ 名称修改问题?我怎样才能确认这一点?
现在,我在 VS 2008 中构建了该库(我尝试将其构建为动态库和静态库,均无效)。我想我过去可以用其他图书馆做到这一点。VS中是否有一些我没有正确设置的标志?
谢谢
c++ - 编译器不可知的 fortran 名称修饰函数
我正在动态链接到一个 fortran 静态对象,并且需要能够(在运行时)获取 fortran 函数的名称(它是一个 C++ 字符串)并为编译器适当地命名它。是否有任何预先构建的功能可以达到此目的?在静态链接的情况下,我使用 autoconf 的 FC_FUNC。
为清楚起见,我想要一个能够接受字符串的函数,将其解释为 fortran 子例程名称,并针对给定的编译器进行适当的处理。在伪 C++ 中,:
我自己并不知道编写这个神秘的“FortranMangle”函数所使用的所有名称修改方案。
visual-c++ - Visual C++ 6.0 名称修改,即使在 extern "C" 和 dllexport 中,也不会生成 RPC 存根
嘿,伙计们,我正在努力在旧版 Visual C++ 6.0 dll 项目中创建一个新函数,以便可以调用 C# dll,但是由于名称修改,我无法这样做,而且似乎无论我做什么我都无法阻止它,(我用dumpbin查看名字)这里是相关代码
这是头文件的一个真正精简的版本
对于 cpp 文件
dumpbin 返回以下 1 0 00001401 ?V7ssGetFileDirInfoUnicode@@YAKPBDW4tag_V7_FILE_LIST_TYPE@@000PAKPAG2@Z
不是我想要的理想它只会是 V7ssGetFileDirInfoUnicode
据我所知,从我一直在阅读的内容来看,我试图这样做意味着我不需要在 .def 文件中定义它。奇怪的是,我遵循与正确显示的预先存在的功能相同的精确设置。
如果有任何帮助,我将不胜感激。谢谢!
更新
.def 文件选项的工作原理不是名称修改,也就是说 MIDL 编译器没有创建 RPC 存根,我认为这两个问题是相关的。
这里也是 MIDL 版本,取自 C 文件本身