在DLL中有一函数名字为Jwt,用Depends打开观察显示为?Jwt@@YAXXZ这是为什么?
有Depends打开其他一些windows自带的dll却显示正常
但使用均正常这是为何?

解决方案 »

  1.   

    这是因为这个DLL并没有一个.def的函数声明导出文件,如果做一个.def的函数声明文件就好了
      

  2.   

    ?Jwt@@YAXXZ一种是类C调用,另一种是其他都可以调用的
      

  3.   

    这是函数名称修饰,编译器改动的。如果你使用新版的Depends,有一个Decorate C++ Functions选项,按下即可把这些东西解释成你想要的函数形式。
      

  4.   


    這與函數的調用方式有關,函數的調用方式可以大至分為三種:
    1._stdcall (API)
    2._cdecl (vc 默認)
    3._fastcall (在BCB裡面用的比較多)這三種調用各有用處,具體的用法你在網上搜一下吧由於上面的三面調用的方式的不同,輸出函數的方式也就不同,因此出現了上面的
    函數名不同的問題
      

  5.   

    C++会对函数加上修饰符,VC6有命令行工具在bin目录下,undname,可以取得你在源代码中定义的函数名
      

  6.   

    Name mangling,C++中用于解决函数重载的方法
      

  7.   

    因为编译器对函数名进行了修饰,考虑到C++中的函数重载,因而不能用C中的直接用函数名,Name mangling,编译器将参数加入了函数名修饰
    想不被编译器修改,可以直接在def中说明导出的函数名
      

  8.   

    正如楼上各位所说,是函数名修饰的问题。我以前写过一篇文章,专门讨论这个主题的,在我的BLOG上有: 
    http://blog.csdn.net/goodname008/archive/2004/07/24/50662.aspx