用C写的dll和C++写的dll有什么不同?
是不是调用的时候不一样?谁能详细点告诉一下吗?感激。

解决方案 »

  1.   

    c不能输出类,而c++能输出类变量。相同函数c++和c的编译器各自输出函数名不同,若要改变这种情况,需要在输出函数声明前加extern "C"
      

  2.   

    c导出的dll是不具有参数匹配的,C++的dll有,可以有depend查看到
      

  3.   

    函数导出的名称不一样。
    C的很传统,代码里面什么名字就是什么名字。
    C++的会有前缀和后缀。要将C++的导出函数变成C的,声明时前加 extern "C"
      

  4.   

    name mangling的处理方法不一样
    涉及到C++的特性,如函数重载、类等等
    其他没什么
      

  5.   

    C和C++缺省调用协议都是__cdecl,而在编译时候产生的对象名称不一样,C++里面为了保证重载函数能够正确被链接,把参数作为信息加入函数名称里面,而C里面就只有函数声明的时候的名字,要保证C++写的DLL能够被C程序正确调用,需要用extern "C"链接指示符修饰函数。其他好像应该没有什么差别(除了语言本身的特性以外),另外C++里面不能导出函数模板,就算导出了也没有办法正常进行实例化(但在DLL内部使用模板还是可以的)