Ошибка соединения при попытке вызвать функции C из Unity - PullRequest
0 голосов
/ 03 января 2019

Попытка вызова пользовательской функции Objective C в форме C #. Однако он продолжает говорить, что он не определен.

Всякий раз, когда я пытаюсь встроить Xcode, он говорит, что _ShowDropIn не определен?

Функция определяется как:

#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

Звонок с кода Unity C #

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

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

Эта функция должна вызывать пользовательский интерфейс дерева мозга, но прямо сейчас выдает мне неопределенную ошибку.

1 Ответ

0 голосов
/ 03 января 2019

Итак, в верхней части каждого C заголовочного файла (после включения защиты) мы имеем

#ifdef __cplusplus
extern "C" {
#endif

, а внизу пишем

#ifdef __cplusplus
}
#endif

вы не должны включать ваше func определение между __cplusplus

-(void)ShowDropIn:(const char *)clientTokenOrTokenizationKey
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...