一个dll中的函数声明为extern "C"  __declspec(dllexport)  char * WINAPI  check(char *, char *, char *, char *);
函数定义为extern "C"  __declspec(dllexport)  char * WINAPI  check(char *, char *, char *, char *)
{
}
编译后用dumpbin /EXPORTS 查看函数名check前后有多余的字符,导致调用check函数时找不到check函数,
而当WINAPI去掉时是好的,这是怎么回事,请教各位

解决方案 »

  1.   

    WINAPI是__stdcall.建立一个.def要用EXPORT check
      

  2.   

    WINAPI就是_stdcall,_stdcall是Pascal程序的缺省调用方式,通常用于Win32 Api中,函数采用从右到左的压栈方式,自己在退出时清空堆栈。VC将函数编译后会在函数名前面加上下划线前缀,在函数名后加上"@"和参数的字节数。
      

  3.   

    使用的时候是使用extern "C"  __declspec(dllimport)  char * WINAPI  check(char *, char *, char *, char *);声明的吗?
      

  4.   

    同意jimsleon(蟋蟀) 
    按你这种导出,使用的时候也要申明。
      

  5.   

    通用的方式是建立一个.def文件,将
    导出函数名称写在EXPORTS下面
    如:
    EXPORTS
      yourFucnName