Ошибка компиляции собственного кода iOS, использование необъявленного идентификатора «threadStateData», расширенного из макроса «CN1_THREAD_STATE_PASS_SINGLE_ARG» - PullRequest
0 голосов
/ 15 января 2019

Я пытаюсь реализовать обратный вызов из нативного кода iOS для AdMob, вот мой код, com_manyukhin_cerebrate_words_synonyms_NativeInterstitialAdsInterfaceImpl.h:

#include "CodenameOne_GLViewController.h"
#include "com_manyukhin_cerebrate_words_synonyms_WordsSynonyms.h"

com_manyukhin_cerebrate_words_synonyms_NativeInterstitialAdsInterfaceImpl.m:

#import "com_manyukhin_cerebrate_words_synonyms_NativeInterstitialAdsInterfaceImpl.h"

- (void) interstitialDidDismissScreen:(GADInterstitial *)ad {
    com_manyukhin_cerebrate_words_synonyms_WordsSynonyms_onInterstitialClosed__(CN1_THREAD_STATE_PASS_SINGLE_ARG);
}

но я получаю ошибку компиляции, которая относится к определению CN1_THREAD_STATE_PASS_SINGLE_ARG:

/var/folders/p_/xlvwhg4101z8r81_nl13cds80000gn/T/build6871177334585892440xxx/dist/WordsSynonyms-src/com_manyukhin_cerebrate_words_synonyms_NativeInterstitialAdsInterfaceImpl.m:59:78: error: use of undeclared identifier 'threadStateData'
        com_manyukhin_cerebrate_words_synonyms_WordsSynonyms_onInterstitialClosed__(CN1_THREAD_STATE_PASS_SINGLE_ARG);
                                                                                    ^
In file included from /var/folders/p_/xlvwhg4101z8r81_nl13cds80000gn/T/build6871177334585892440xxx/dist/WordsSynonyms-src/com_manyukhin_cerebrate_words_synonyms_NativeInterstitialAdsInterfaceImpl.m:1:
In file included from /var/folders/p_/xlvwhg4101z8r81_nl13cds80000gn/T/build6871177334585892440xxx/dist/WordsSynonyms-src/WordsSynonyms-Prefix.pch:18:
/var/folders/p_/xlvwhg4101z8r81_nl13cds80000gn/T/build6871177334585892440xxx/dist/WordsSynonyms-src/cn1_globals.h:781:42: note: expanded from macro 'CN1_THREAD_STATE_PASS_SINGLE_ARG'
#define CN1_THREAD_STATE_PASS_SINGLE_ARG threadStateData
                                         ^

есть идеи как это исправить?

интересно, что следующий код (другой макрос) в одном и том же файле .m не вызывает ошибку:

- (void) interstitial:(GADInterstitial *)ad didFailToReceiveAdWithError:(GADRequestError *)error {  
    com_manyukhin_cerebrate_words_synonyms_WordsSynonyms_onInterstitialFaliedToLoad___int(CN1_THREAD_GET_STATE_PASS_ARG -1);
}

1 Ответ

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

Они определены так:

#define CODENAME_ONE_THREAD_STATE struct ThreadLocalData* threadStateData

#define CN1_THREAD_STATE_SINGLE_ARG CODENAME_ONE_THREAD_STATE
#define CN1_THREAD_STATE_MULTI_ARG CODENAME_ONE_THREAD_STATE,
#define CN1_THREAD_STATE_PASS_ARG threadStateData,
#define CN1_THREAD_STATE_PASS_SINGLE_ARG threadStateData
#define CN1_THREAD_GET_STATE_PASS_ARG getThreadLocalData(),
#define CN1_THREAD_GET_STATE_PASS_SINGLE_ARG getThreadLocalData()

Так что вам нужно использовать CN1_THREAD_GET_STATE_PASS_SINGLE_ARG. Я не уверен, почему это не сработает в том же файле. Может произойти сбой, как только вы исправите этот вызов.

...