gpt4 book ai didi

c++ - 使用 _stdcall 将更改 dll 中导出函数的名称

转载 作者:行者123 更新时间:2023-11-28 06:48:48 24 4
gpt4 key购买 nike

我正在尝试为 Profilab 制作模块 (dll)。为了让它起作用,应该有一个导出名称的列表,例如

// return number of inputs
unsigned char NumInputs()

在查看 C++ Builder 的示例时,它是这样声明的

extern "C" __declspec(dllexport) unsigned char _stdcall NumInputs();

当我在 Visual Studio 2013 Express (?) C++ 项目中以同样的方式声明它时,我得到的名称是这样导出的(使用 dependency walker 检查):

_NumInputs@0

这不适用于 Profilab

删除 _stdcall 部分将生成专有名称 (NumImputs),但软件会崩溃,我认为是由于缺少 _stdcall 部分。

我该怎么办?如何同时导出 NumInputs_stdcall

最佳答案

使用正确的调用约定 (stdcall) 定义函数。

因此,您不会发生崩溃。

不过,您还需要正确的名称,否则它不会链接,所以 use a def-file其中明确列出了应使用什么名称(如果有)和/或指定序号导出的函数。

LIBRARY   BTREE
EXPORTS
Insert @1
Delete @2
Member @3
Min @4

此示例是从链接文档中复制的。所有导出语句都遵循这种模式:

entryname[=internalname] [@ordinal [NONAME]] [[PRIVATE] | [DATA]]

关于c++ - 使用 _stdcall 将更改 dll 中导出函数的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24452583/

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