zoukankan      html  css  js  c++  java
  • c调用c++编的dll,c++调用c编写的dll,extern “C”的用法

    转自:http://blog.csdn.net/life_is_too_hard/article/details/52137271

    c和c++不能直接相互调用,主要是因为c++有重载函数的功能,为了区分重载函数,编译器会在函数名上加上一些修饰用符号,而c不这么做。为了让c与c++的程序能够相互调用对方的库,就有了extern “C”。注意,extern “C” 是c++的规范,所以只能出现在c++的代码里面,加在函数声明前,表示函数是用c的规范。

    1.c代码调用c++dll

    编译c++dll的要点

    • 供c调用的c++的函数接口不能包含c++特有的东西。
    • 在编译生成供c代码调用的dll时,头文件的中的函数声明前要加上extern “C” 告诉编译器按照c规范处理函数名。
    • 编译完成后,提供给c使用的头文件里面不能包含extern “C”,可以使用宏开关解决,也可以重新写个头文件。

    c代码调用c++dll的要点

    • 和正常调用c函数一样

    2.c++调用c语言dll

    编译c预言 dll的要点

    • c语言dll正常编写,不需要做额外处理

    c++调用c语言dll的要点

    • 在包含c的头文件或声明来自c的函数时需要加上extern "C", 建议这么做

    总结,不管谁调用谁,c代码不需要特殊处理,只要在c++代码的正确位置加上extern ”C" 即可。

    既然选择了远方,就不顾风雨兼程
  • 相关阅读:
    OCP-1Z0-053-200题-36题-615
    Android换行符变成方框的解决方法
    OCP-1Z0-053-200题-35题-614
    FusionCharts 3D帕累托图
    FusionCharts 3D帕累托图报错
    FusionCharts 2D帕累托图
    OCP-1Z0-053-200题-33题-612
    OCP-1Z0-053-V13.02-612题
    OCP-1Z0-053-200题-32题-611
    OCP-1Z0-053-V13.02-611题
  • 原文地址:https://www.cnblogs.com/zhengfa-af/p/8109193.html
Copyright © 2011-2022 走看看