gpt4 book ai didi

C++ : Finding out decorated names

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:00:13 25 4
gpt4 key购买 nike

如何找出将分配给每个方法名称的修饰名称?我试图找出装饰名称是什么,以便我可以将其导出到 DLL 中。

最佳答案

.DEF 文件仍在被使用?

忘记 .DEF 文件吧。它们已成为过去。

通过 __declspec(dllimport/dllexport) 导出函数,无论是 C 函数还是 C++ 符号。

如果您确实需要未修饰的名称,请按照 Greg Hewgill 的建议使用 __declspec(dllimport/dllexport) 关键字,结合 extern "C",这将去除这些符号的修饰...

您确定要删除 C++ 装饰吗?

这有一些合理的理由:您想要导出将由 C 代码使用的代码,或者您想要使用由不同编译器编译的模块中的 DLL。

出于第二个原因,我会改为为每个编译器生成一个 DLL,并保留装饰。

抛开这些原因,你为什么要把装饰去掉?

C++ 装饰/名称修改不是邪恶的

恰恰相反。

如果您正在使用一个编译器(我想您会这样做,因为您想要使用修饰的名称,而不是 extern "C"的),那么请保留 C++ 修饰/名称修饰。

通过这种方式,您将能够使用完整的 C++ 功能,即 namespace 、类、函数/方法重载等。

不过,手动使用符号装饰是一种灾难:使用 dllexport 导出您的符号,而无需处理另一个 (.DEF) 文件。

关于C++ : Finding out decorated names,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/190326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com