Linker error calling C-Function from Objective-C++

前端 未结 2 1755
离开以前
离开以前 2020-12-29 04:47

I\'ve got a weird linker issue. I have code that looks like so:

    double given_amount = self.modelController.levelCompleteRewardAmount;
    swrve_currency_         


        
相关标签:
2条回答
  • 2020-12-29 05:40

    If you are using c function in c++ file. you should use extern "c"{}. In .h file

    #ifdef __cplusplus
    extern "C" {
    #endif
    
    swrve_currency_given(parameter1, parameter2, parameter3);// a c function
    
    
    #ifdef __cplusplus
    }
    #endif  
    

    extern "C" is meant to be recognized by a C++ compiler and to notify the compiler that the noted function is (or to be) compiled in C style.

    If you're linking to a library that was compiled as C code. use

    extern "C" {
      #include "c_only_header.h"
    }
    

    Take a look at When to use extern "C" in C++?

    0 讨论(0)
  • 2020-12-29 05:42

    You may need to surround the function prototype with:

    #if defined __cplusplus
    extern "C" {
    #endif
    
    void swrve_currency_given (...whatever goes here...);
    
    #if defined __cplusplus
    };
    #endif
    

    That tells the compiler that it's a C function and not a C++ function.

    0 讨论(0)
提交回复
热议问题