Linking failing when trying to call C functions from Unity





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







-3















Trying to call a custom Objective C function form C#. However it keeps saying that it is not defined.



Whenever i try to build in Xcode it says that _ShowDropIn is undefined?



The function is defined as:



#import <Foundation/Foundation.h>
//#import "BraintreeCore.h"



#import <BraintreeCore.h>
#import <BraintreeDropIn.h>


@interface BrainTreeHandler : UIViewController
#ifdef _cplusplus
extern "C"{
-(void)ShowDropIn:(const char *)clientTokenOrTokenizationKey;
}
#endif


@end

@implementation BrainTreeHandler

#ifdef __cplusplus
extern "C"
{


-(void)ShowDropIn:(const char *)clientTokenOrTokenizationKey{

BTDropInRequest *request = [[BTDropInRequest alloc] init];
BTDropInController *dropIn = [[BTDropInController alloc]initWithAuthorization:clientTokenOrTokenizationKey request:request
handler:^(BTDropInController * _Nonnull controller, BTDropInResult * _Nullable result, NSError * _Nullable error) {

if (error != nil) {
NSLog(@"ERROR");
} else if (result.cancelled) {
NSLog(@"CANCELLED");
} else {
// Use the BTDropInResult properties to update your UI
// result.paymentOptionType
// result.paymentMethod
// result.paymentIcon
// result.paymentDescription
}
}];
[self presentViewController:dropIn animated:YES completion:nil];

}
#endif

@end


Calling from Unity C# code



  [DllImport("__Internal")]
private static extern void ShowDropIn(string s);

void ShowBrainTree(){
//clientToke is a string
ShowDropIn(clientToken);
}


This function should call the brain tree UI but right now just gives me an undefined error.










share|improve this question




















  • 2





    Why is this question tagged C? It is clearly about Objective-C, which is an entirely different language.

    – DYZ
    Jan 3 at 5:48











  • I don't think this makes sense at all. I am not an Objective-C guru, but isn't - meaning that this is an instance method, and then you've got a static method without any namespacing in C#...?

    – Antti Haapala
    Jan 3 at 6:59











  • Yeah sorry about that first time ever trying to code Objective-C. Fixed my issue.

    – Stuart McRoberts
    Jan 4 at 1:07


















-3















Trying to call a custom Objective C function form C#. However it keeps saying that it is not defined.



Whenever i try to build in Xcode it says that _ShowDropIn is undefined?



The function is defined as:



#import <Foundation/Foundation.h>
//#import "BraintreeCore.h"



#import <BraintreeCore.h>
#import <BraintreeDropIn.h>


@interface BrainTreeHandler : UIViewController
#ifdef _cplusplus
extern "C"{
-(void)ShowDropIn:(const char *)clientTokenOrTokenizationKey;
}
#endif


@end

@implementation BrainTreeHandler

#ifdef __cplusplus
extern "C"
{


-(void)ShowDropIn:(const char *)clientTokenOrTokenizationKey{

BTDropInRequest *request = [[BTDropInRequest alloc] init];
BTDropInController *dropIn = [[BTDropInController alloc]initWithAuthorization:clientTokenOrTokenizationKey request:request
handler:^(BTDropInController * _Nonnull controller, BTDropInResult * _Nullable result, NSError * _Nullable error) {

if (error != nil) {
NSLog(@"ERROR");
} else if (result.cancelled) {
NSLog(@"CANCELLED");
} else {
// Use the BTDropInResult properties to update your UI
// result.paymentOptionType
// result.paymentMethod
// result.paymentIcon
// result.paymentDescription
}
}];
[self presentViewController:dropIn animated:YES completion:nil];

}
#endif

@end


Calling from Unity C# code



  [DllImport("__Internal")]
private static extern void ShowDropIn(string s);

void ShowBrainTree(){
//clientToke is a string
ShowDropIn(clientToken);
}


This function should call the brain tree UI but right now just gives me an undefined error.










share|improve this question




















  • 2





    Why is this question tagged C? It is clearly about Objective-C, which is an entirely different language.

    – DYZ
    Jan 3 at 5:48











  • I don't think this makes sense at all. I am not an Objective-C guru, but isn't - meaning that this is an instance method, and then you've got a static method without any namespacing in C#...?

    – Antti Haapala
    Jan 3 at 6:59











  • Yeah sorry about that first time ever trying to code Objective-C. Fixed my issue.

    – Stuart McRoberts
    Jan 4 at 1:07














-3












-3








-3








Trying to call a custom Objective C function form C#. However it keeps saying that it is not defined.



Whenever i try to build in Xcode it says that _ShowDropIn is undefined?



The function is defined as:



#import <Foundation/Foundation.h>
//#import "BraintreeCore.h"



#import <BraintreeCore.h>
#import <BraintreeDropIn.h>


@interface BrainTreeHandler : UIViewController
#ifdef _cplusplus
extern "C"{
-(void)ShowDropIn:(const char *)clientTokenOrTokenizationKey;
}
#endif


@end

@implementation BrainTreeHandler

#ifdef __cplusplus
extern "C"
{


-(void)ShowDropIn:(const char *)clientTokenOrTokenizationKey{

BTDropInRequest *request = [[BTDropInRequest alloc] init];
BTDropInController *dropIn = [[BTDropInController alloc]initWithAuthorization:clientTokenOrTokenizationKey request:request
handler:^(BTDropInController * _Nonnull controller, BTDropInResult * _Nullable result, NSError * _Nullable error) {

if (error != nil) {
NSLog(@"ERROR");
} else if (result.cancelled) {
NSLog(@"CANCELLED");
} else {
// Use the BTDropInResult properties to update your UI
// result.paymentOptionType
// result.paymentMethod
// result.paymentIcon
// result.paymentDescription
}
}];
[self presentViewController:dropIn animated:YES completion:nil];

}
#endif

@end


Calling from Unity C# code



  [DllImport("__Internal")]
private static extern void ShowDropIn(string s);

void ShowBrainTree(){
//clientToke is a string
ShowDropIn(clientToken);
}


This function should call the brain tree UI but right now just gives me an undefined error.










share|improve this question
















Trying to call a custom Objective C function form C#. However it keeps saying that it is not defined.



Whenever i try to build in Xcode it says that _ShowDropIn is undefined?



The function is defined as:



#import <Foundation/Foundation.h>
//#import "BraintreeCore.h"



#import <BraintreeCore.h>
#import <BraintreeDropIn.h>


@interface BrainTreeHandler : UIViewController
#ifdef _cplusplus
extern "C"{
-(void)ShowDropIn:(const char *)clientTokenOrTokenizationKey;
}
#endif


@end

@implementation BrainTreeHandler

#ifdef __cplusplus
extern "C"
{


-(void)ShowDropIn:(const char *)clientTokenOrTokenizationKey{

BTDropInRequest *request = [[BTDropInRequest alloc] init];
BTDropInController *dropIn = [[BTDropInController alloc]initWithAuthorization:clientTokenOrTokenizationKey request:request
handler:^(BTDropInController * _Nonnull controller, BTDropInResult * _Nullable result, NSError * _Nullable error) {

if (error != nil) {
NSLog(@"ERROR");
} else if (result.cancelled) {
NSLog(@"CANCELLED");
} else {
// Use the BTDropInResult properties to update your UI
// result.paymentOptionType
// result.paymentMethod
// result.paymentIcon
// result.paymentDescription
}
}];
[self presentViewController:dropIn animated:YES completion:nil];

}
#endif

@end


Calling from Unity C# code



  [DllImport("__Internal")]
private static extern void ShowDropIn(string s);

void ShowBrainTree(){
//clientToke is a string
ShowDropIn(clientToken);
}


This function should call the brain tree UI but right now just gives me an undefined error.







c# ios objective-c xcode unity3d






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Jan 3 at 6:55









Antti Haapala

86k16163205




86k16163205










asked Jan 3 at 5:46









Stuart McRobertsStuart McRoberts

11




11








  • 2





    Why is this question tagged C? It is clearly about Objective-C, which is an entirely different language.

    – DYZ
    Jan 3 at 5:48











  • I don't think this makes sense at all. I am not an Objective-C guru, but isn't - meaning that this is an instance method, and then you've got a static method without any namespacing in C#...?

    – Antti Haapala
    Jan 3 at 6:59











  • Yeah sorry about that first time ever trying to code Objective-C. Fixed my issue.

    – Stuart McRoberts
    Jan 4 at 1:07














  • 2





    Why is this question tagged C? It is clearly about Objective-C, which is an entirely different language.

    – DYZ
    Jan 3 at 5:48











  • I don't think this makes sense at all. I am not an Objective-C guru, but isn't - meaning that this is an instance method, and then you've got a static method without any namespacing in C#...?

    – Antti Haapala
    Jan 3 at 6:59











  • Yeah sorry about that first time ever trying to code Objective-C. Fixed my issue.

    – Stuart McRoberts
    Jan 4 at 1:07








2




2





Why is this question tagged C? It is clearly about Objective-C, which is an entirely different language.

– DYZ
Jan 3 at 5:48





Why is this question tagged C? It is clearly about Objective-C, which is an entirely different language.

– DYZ
Jan 3 at 5:48













I don't think this makes sense at all. I am not an Objective-C guru, but isn't - meaning that this is an instance method, and then you've got a static method without any namespacing in C#...?

– Antti Haapala
Jan 3 at 6:59





I don't think this makes sense at all. I am not an Objective-C guru, but isn't - meaning that this is an instance method, and then you've got a static method without any namespacing in C#...?

– Antti Haapala
Jan 3 at 6:59













Yeah sorry about that first time ever trying to code Objective-C. Fixed my issue.

– Stuart McRoberts
Jan 4 at 1:07





Yeah sorry about that first time ever trying to code Objective-C. Fixed my issue.

– Stuart McRoberts
Jan 4 at 1:07












1 Answer
1






active

oldest

votes


















0














So, at the top of each C header file (after the include guards), we have



#ifdef __cplusplus
extern "C" {
#endif


and at the bottom, we write



#ifdef __cplusplus
}
#endif


you should not include your func define between __cplusplus



-(void)ShowDropIn:(const char *)clientTokenOrTokenizationKey





share|improve this answer


























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54016941%2flinking-failing-when-trying-to-call-c-functions-from-unity%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    So, at the top of each C header file (after the include guards), we have



    #ifdef __cplusplus
    extern "C" {
    #endif


    and at the bottom, we write



    #ifdef __cplusplus
    }
    #endif


    you should not include your func define between __cplusplus



    -(void)ShowDropIn:(const char *)clientTokenOrTokenizationKey





    share|improve this answer






























      0














      So, at the top of each C header file (after the include guards), we have



      #ifdef __cplusplus
      extern "C" {
      #endif


      and at the bottom, we write



      #ifdef __cplusplus
      }
      #endif


      you should not include your func define between __cplusplus



      -(void)ShowDropIn:(const char *)clientTokenOrTokenizationKey





      share|improve this answer




























        0












        0








        0







        So, at the top of each C header file (after the include guards), we have



        #ifdef __cplusplus
        extern "C" {
        #endif


        and at the bottom, we write



        #ifdef __cplusplus
        }
        #endif


        you should not include your func define between __cplusplus



        -(void)ShowDropIn:(const char *)clientTokenOrTokenizationKey





        share|improve this answer















        So, at the top of each C header file (after the include guards), we have



        #ifdef __cplusplus
        extern "C" {
        #endif


        and at the bottom, we write



        #ifdef __cplusplus
        }
        #endif


        you should not include your func define between __cplusplus



        -(void)ShowDropIn:(const char *)clientTokenOrTokenizationKey






        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited Jan 3 at 6:18

























        answered Jan 3 at 6:13









        EthanEthan

        353310




        353310
































            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54016941%2flinking-failing-when-trying-to-call-c-functions-from-unity%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            MongoDB - Not Authorized To Execute Command

            How to fix TextFormField cause rebuild widget in Flutter

            in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith