链接器错误与链接器无关

这个问题在这里已经有了答案:

  • C ++中extern“C”的效果是什么? 12个答案
  • 结合C ++和C - #ifdef __cplusplus如何工作? 3个答案

  • 您的错误是由于C ++类型安全的链接而发生的,它会破坏函数名称。 你需要告诉C ++编译器function()具有C链接:

    extern "C" void function(void);
    

    但是,如果C和C ++编译器应该使用相同的头文件,通常通过使用

    #ifdef __cplusplus
    extern "C"
    #endif
    void function(void);
    

    用于单个函数声明或使用

    #ifdef __cplusplus
    extern "C" {
    #endif 
    
    void function(void);
    int  response(int arg);
    …
    
    #ifdef __cplusplus
    }
    #endif 
    

    围绕C函数的功能块声明。

    您还可以在C语言和C ++代码中使用现有的头文件,请使用:

    extern "C" {
    #include "header.h"
    }
    
    链接地址: http://www.djcxy.com/p/40495.html

    上一篇: Linker error not related to Linker

    下一篇: Using the same variable in different files (using extern)