gpt4 book ai didi

c++ - 如何停止对我的 DLL 导出函数的名称修改?

转载 作者:IT老高 更新时间:2023-10-28 12:45:30 28 4
gpt4 key购买 nike

我正在尝试创建一个导出名为“GetName”的函数的 DLL。我希望其他代码能够调用此函数而不必知道损坏的函数名称。

我的头文件是这样的:

#ifdef __cplusplus
#define EXPORT extern "C" __declspec (dllexport)
#else
#define EXPORT __declspec (dllexport)
#endif

EXPORT TCHAR * CALLBACK GetName();

我的代码如下所示:

#include <windows.h>
#include "PluginOne.h"

int WINAPI DllMain (HINSTANCE hInstance, DWORD fdwReason, PVOID pvReserved)
{
return TRUE ;
}

EXPORT TCHAR * CALLBACK GetName()
{
return TEXT("Test Name");
}

当我构建时,DLL 仍然导出名称为“_GetName@0”的函数。

我做错了什么?

最佳答案

小修正 - 用于成功解析客户端名称

extern "C"

必须在导出方和进口方一样。

extern "C"会将 proc 的名称简化为:"_GetName"。

此外,您可以借助 .def 文件中的 EXPORTS 部分强制使用任何名称

关于c++ - 如何停止对我的 DLL 导出函数的名称修改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1467144/

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