【发布时间】:2021-11-13 04:58:33
【问题描述】:
有没有办法为我从 dll 导入的函数使用另一个名称? 假设我有一个用 C 编写的函数,它被导出到一个 DLL:
__declspec(dllexport) int Sum(int x, int y);
我想将它导入到命名空间 Math 下的 C++ 项目中,并命名为 Add 而不是 Sum:
namespace Math {
__declspec(dllimport) int Add(int x, int y);
}
现在我知道这不会链接,那么有没有可能的方法呢?
【问题讨论】:
-
为什么?这可能是所谓的“XY 问题”,这意味着您问错了问题。
-
使用
LoadLibraryGetProcAddress组合手动加载它(不要使用导入库),您可以随意调用它。 -
如果您可以使用 .DEF 文件,您可以更改导出的名称,尽管我认为您需要使用管理名称。请参阅EXPORTS 部分的文档。
-
@1201ProgramAlarm 我在想一种通用的方法,它适用于语言本身,而不是 gcc(我使用 msvc)。类似于 C# 中的 [DLLimport("Library.dll", entryPoint="Sum")]