问题标签 [name-decoration]

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.

0 投票
1 回答
153 浏览

c++ - 找出名字装饰

我有一个与标准第三方客户端集成的 ActiveX DLL。为此,我必须包含一个自定义 DEF 文件、一个代理链接器,并自初始化 COM 库。

当我用我创建的客户端测试我的 ActiveX DLL 时,它运行良好。但是,当我在第三方客户端中包含 ActiveX DLL 时,它会在某些函数调用中崩溃。我相信崩溃是命名装饰不匹配的结果。

有没有办法验证第三方客户端程序需要的名称装饰?

谢谢,

0 投票
1 回答
1695 浏览

c++ - VC++ 防止所有符号名称装饰

我正在开发一个 DLL,它将使用 _stdcall 调用转换从另一种语言中使用(因此没有导入库并包括 dll 的头文件)。问题是 VC++ 似乎总是对其导出的符号进行一些名称修饰。我看到的所有引用都说使用 extern "C" 但这似乎仍然给我留下了一个前导下划线和一个 @ 加上导出名称后的一个数字。

最糟糕的一点是在目标语言中加载扩展 dll 的自动方法本质上是“func_name = GetProcAddress(dll,“func_name”)”所以使用未修饰的名称 GetProcAddress 失败,并且使用修饰的名称它抱怨非法变量名称( @ 不允许) :(

如何让 VC++ 导出完全没有名称装饰的东西?

垃圾箱文件

00011366 _test@8 = @ILT+865(_test@8)

0 投票
1 回答
4765 浏览

c++ - C++ 名称空间混淆 - std:: vs :: vs 调用 tolower 时没有前缀?

为什么是这样?

transform(theWord.begin(), theWord.end(), theWord.begin(), std::tolower); - 不工作 transform(theWord.begin(), theWord.end(), theWord.begin(), tolower); - 不工作

transform(theWord.begin(), theWord.end(), theWord.begin(), ::tolower); - 确实有效

theWord 是一个字符串。我是using namespace std;

为什么它与前缀一起使用::而不是与std::或不一起使用?

谢谢你的帮助。

0 投票
3 回答
540 浏览

c++ - 在 C++ 中的 dll 中使用函数?

我在类名之前使用 __declspec(dllexport) 在 C++ 中创建了一个 dll。现在,当我尝试在另一个 c++ 程序中使用它时,它会在两者之间崩溃。当我调试它时,我发现函数指针根本没有初始化。请帮帮我。

提前致谢。

0 投票
2 回答
9256 浏览

c++ - 如何解决 Visual C++ 2005 的“超出装饰名称长度,名称被截断”警告?

例如,假设出于某种原因我有一段看起来像这样的代码:

我收到如下警告:

有什么办法可以重写那个该死的长向量而不是得到那个警告?我仍然希望数据结构相同,但没有收到警告。我不想禁用警告。可能的?

注意:这是 Visual Studio 2005

....如果您真的很好奇我为什么要使用如此可怕的数据结构,那是由自动生成的代码引起的。

0 投票
1 回答
1428 浏览

c++-cli - 使用 libcurl 链接错误

我在项目中包含并使用 libcurl,但出现此错误

和别的。我用 Visual Studio C++ 编码我搜索了那些,我读到这个库可能有问题,它是从 C 文件编译的。我的项目在 c++/cli 中。你认为这是问题所在吗?我能做什么?

这包括我正在使用的

那是代码

链接错误 LNK2031

链接错误 LNK2019

0 投票
2 回答
970 浏览

c - __stdcall 名称装饰的语法是什么?

我有一个调用一组函数的程序,如下所示:

如果名称修饰不匹配,链接器会显示如下错误:

我的理解是_stdcall语法是一个'_' + 'name of the function' + '@' + 'number of arguments * 4'.

那么,为什么链接器要求进行?VB_Create@@YGHPAD@Z名称修饰呢?这是什么标准?

0 投票
2 回答
1092 浏览

c - 从 C++/CLI Visual Studio 2010 调用使用 VS 2005 编译的本机 C - 无法打开 .lib 文件...

您好我想将函数从 C dll 调用到 C++/CLI。C 函数声明为 extern。我按照本教程链接 dll:http ://social.msdn.microsoft.com/Forums/en/Vsexpressvc/thread/84deabaa-ae82-47cc-aac0-592f5a8dfa22 然后在我的 C++/CLI dll 中我有以下:

我知道我应该只在 .h 中给出签名,然后在 .cpp 中编写功能代码,但为了测试,我将它写在同一个地方。这些是我得到的错误:

我已经尝试查找它们,但除了它们是由于链接错误导致的事实之外,找不到太多关于它们的信息......

更新:项目组织...

因此,对于我的 c++/cli 项目,我编写了一个 .hpp,如下所示,其中包括我的 880 多个标头:

以下是 gtobf.h:

然后在我的 c++/cli 包装器中,我包含了我的 all.hpp,其中包含了所有其他头文件……尽管如此,我仍然遇到错误。

我确定该函数已导出,因为我使用 P/Invoke 使用了 C# 中的 dll ...

!!!!!!!!!!!!!!!编辑:

我没有指出 lib 的正确路径...现在我已经解决了这个问题,我收到 LNK1104 错误,说它无法打开我的 .lib

0 投票
2 回答
10148 浏览

c++ - mingw32 g++ 和 stdcall @suffix

我声明了一些原型化的 C++ 函数,如下所示:

我也有一些导出的第三方 dll function()- 根本没有名称装饰。undefined reference to function@...由于 MinGW 的 stdcall @-suffix,我无法构建我的 exe 或 dll 。如何在没有 @... 的情况下获取目标文件,只是简单的函数名?

0 投票
1 回答
89 浏览

compiler-warnings - 如果编译器截断符号的修饰名称,它怎么可能正确链接?

Microsoft 的 Visual C++ 编译器有一个特定的编译器警告C4503关于截断超过编译器限制(4096 个字符)的修饰名称。他们对警告声明的描述

但是,程序的正确性不受截断名称的影响。

这怎么可能?

在我的编译和链接心智模型中,编译器输出的修饰符号名称是唯一将实现它的对象和使用它的对象之间的特定函数关联起来的东西,允许两者在链接处连接时间。如果两个不同的函数具有足够长的标识符以被截断,并且截断后剩余的部分是相同的,那么链接器怎么可能使它们保持直线