zoukankan      html  css  js  c++  java
  • C与CPP文件的区别

    在编译源文件时,C编译器和C++编译器都会对符号(函数或变量)名作某些修正,但两者采用的修正方法不同,所以两者生成的目标文件不能互相链接。在C++中使用extern "C"可以让C++符号获得C链接特性。由于C++编译器会自动定义__cplusplus宏,所以在C语言头文件中采用这种结构可以保证无论使用何种编译器,生成的目标文件都具有C链接特性,能够与标准C编译器所生成的目标文件相链接。

    通常c/c++编译器会根据文件后缀来选择符号修正,所以最好把c的代码放到.c文件中,把c++的代码放到.cpp文件中。

    我用VC++6.0创建动态库,做了以下试验。

    在test.cpp中输出c函数,如下:

    1、新建Win32 Dynamic-Link Library

    2、输出函数

    extern "C" _declspec(dllexport) void test();

    void test()

    {

     

    }

    而在test.c中输出c函数,就可以这样,如下:

    1、新建Win32 Dynamic-Link Library

    2、输出函数

    _declspec(dllexport) void test();

    void test()

    {

     

    }

     

    Code


    //DLL.def
    LIBRARY   CDLL
    EXPORTS
       test   @1



     

    //CTestDLL.cpp
    extern "C" {
     _declspec(dllimport) 
    int test(int a,int b);
    }
    int main(int argc, char* argv[])
    {

     printf(
    "Hello World!\n %d",test(1,2));
     
    return 0;
    }

  • 相关阅读:
    ubuntu16.04本地软件源搭建
    2080TI显卡ubuntu16.04机器学习安装和克隆
    PLSQL导入excel数据方法
    只有英伟达显卡输出口的电脑安装ubuntu系统记录
    百度人脸识别学习
    http application/x-www-form-urlencoded 模式响应学习
    JS中继承的几种实现方式
    浅拷贝和深拷贝
    防抖和节流
    HTML知识点总结
  • 原文地址:https://www.cnblogs.com/ahuo/p/1265643.html
Copyright © 2011-2022 走看看