生成DLL中函数名称怎么去掉下划线

阿狸cc 2013-08-27 03:31:17
头文件:

#ifdef SYDIDCARDAPI_EXPORTS
#define SYDIDCARDAPI_API __declspec(dllexport)
#else
#define SYDIDCARDAPI_API __declspec(dllimport)
#endif


#ifdef _WIN32
#define SYDIDCARDALL __stdcall
#else
#define SYDIDCARDALL
#endif
//#ifndef SDTAPI_
//#define SDTAPI_

// This class is exported from the Sdtapi.dll
#ifdef __cplusplus
extern "C"{
#endif

long __declspec(dllexport) /*__stdcall*/ CreateDevice(int Port);

#ifdef __cplusplus
}
#endif


生成的DLL,查看其函数,函数名称是_CreateDevice@4 怎么设置才能是CreateDevice
...全文
585 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lm_whales 2013-09-08
  • 打赏
  • 举报
回复
C,C++ 会有下划线的,C cdcel ,c++ stdcall ,都会有下划线. pascal 没有,不过VC的 PASCAL 已经是stdcall 了,一定会加下划线的 def也没有用的,不过调用可以不加下划线。
nextseconds 2013-09-04
  • 打赏
  • 举报
回复
使用def模块定义吧,这个比较适用。
「已注销」 2013-08-28
  • 打赏
  • 举报
回复
用def文件。其他好像弄不出来
725137 2013-08-28
  • 打赏
  • 举报
回复
加个extern "C"和stdlcall就好了。
freelancer_ex 2013-08-27
  • 打赏
  • 举报
回复
def 文件,给你的导出函数取个别名
阿狸cc 2013-08-27
  • 打赏
  • 举报
回复
请大神帮忙看看
阿狸cc 2013-08-27
  • 打赏
  • 举报
回复
__stdcall 导出的函数名称不就是_CreateDevice@4
xiaohuh421 2013-08-27
  • 打赏
  • 举报
回复
使用stdcall调用约定, 或者使用 def文件导出. 这部分问题在孙鑫的MFC相关视频中有详细讲解.
木头菇 2013-08-27
  • 打赏
  • 举报
回复
def文件试试

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧