dll - 导出的函数符号名称修改

标签 dll export d name-mangling

我有一个 D DLL,它正在由我无法控制的 C++ 程序加载。程序 LoadLibrarys 我的 DLL 并使用 GetProcAddress 找到一个名为“extension_load”的函数,该函数接受一个参数(一个指针)。在我的 D DLL 中,我有:

extern (C) int extension_load(void* ptr) {
    return 0;
}

这个名称需要导出为ex​​tension_load,但它被导出为ex​​tension_load@4,所以GetProcAddress 找不到它。如何在不修改名称的情况下使其成为普通的 extension_load?

最佳答案

您需要为链接器提供重命名导出的 .def 文件。文档 are here ,你需要导出。

关于dll - 导出的函数符号名称修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4422783/

相关文章:

c - 在 C 到 VB 控件中渲染图形

c# - 用户代码未处理Dll get Exception的C#用户定义的异常处理错误

shell - 为什么 zsh 无法从脚本中的路径读取 ~ (波浪号)?

jquery - 将 html 导出到 Excel,排除某些单元格或列

string - 加入 d 中的字符串数组

d - 如何声明红黑树数组?

c# - 编写 C++ .dll 并访问它们 Unity-3D

c# - 向 WPF 窗口实例添加资源

vba - 为什么在 PPT 版本 2009 中使用 ExportAsFixedFormat 到 PDF 而不是 XPS 时得到 VBA 'Run-time error 70: Permission Denied'

d - D 的 "out"存储类有什么用?