如何停止我的DLL的导出函数的名称,识别码? [英] How do I stop name-mangling of my DLL's exported function?

查看:128
本文介绍了如何停止我的DLL的导出函数的名称,识别码?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图创建一个出口一个名为的GetName函数的DLL。我想其他code,能够调用此函数,而无需知道重整的函数名。

I'm trying to create a DLL that exports a function called "GetName". I'd like other code to be able to call this function without having to know the mangled function name.

我的头文件是这样的:

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

EXPORT TCHAR * CALLBACK GetName();

我的code是这样的:

My code looks like this:

#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。

When I build, the DLL still exports the function with the name: "_GetName@0".

我是什么做错了吗?

推荐答案

小的修正 - 成功解决由客户为例名称

Small correction - for success resolving name by clinet

extern "C"

必须是出口侧进口。

must be as on export side as on import.

为externC将减少PROC的名字:_GetName

extern "C" will reduce name of proc to: "_GetName".

更多了,你可以在DEF文件强制任何名义部分出口帮助

More over you can force any name with help of section EXPORTS in .def file

这篇关于如何停止我的DLL的导出函数的名称,识别码?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆