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;
}
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
add a comment |
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
2
Why is this question taggedC
? It is clearly aboutObjective-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
add a comment |
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
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
c# ios objective-c xcode unity3d
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 taggedC
? It is clearly aboutObjective-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
add a comment |
2
Why is this question taggedC
? It is clearly aboutObjective-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
add a comment |
1 Answer
1
active
oldest
votes
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
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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
add a comment |
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
add a comment |
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
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
edited Jan 3 at 6:18
answered Jan 3 at 6:13
EthanEthan
353310
353310
add a comment |
add a comment |
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
2
Why is this question tagged
C
? It is clearly aboutObjective-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