Файл 'string' не найден в плагине ios с файлом C ++ - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь запустить файл c ++ в плагине IOS (а не в приложении ios). Сначала я создаю cpp файл

Приветствие. cpp

#include "Greeting.hpp"

Greeting::Greeting() {
    greeting = "Hello C++!";
}

std::string Greeting::greet() {
    return greeting;
}

Затем я создаю Greeting.hpp

#ifndef Greeting_hpp
#define Greeting_hpp

#include <stdio.h>
#include <string>

class Greeting {
    std::string greeting;
public:
    Greeting();
    std::string greet();
};
#endif /* Greeting_hpp */

Затем я импортирую его в объект c файл AgoraRtcEnginePlugin.m

#import "Greeting.hpp"

NSString* newTitle = [NSString stringWithCString:greeting.greet().c_str() encoding:[NSString defaultCStringEncoding]];
        result(newTitle);

Но когда я компилирую, он всегда выдает ошибки

/agora-flutter-sdk/ios/Classes/Greeting.hpp:13:10: fatal error: 'string' file not found
#include <string>

1 Ответ

1 голос
/ 18 июня 2020

Проблема в том, что вы включаете C ++ в свой файл Objective- C (AgoraRtcEnginePlugin.m = .m extension is Objective- C). Objective- C - это слой поверх C, а Objective- C - строгий надмножество из C.

Вы не можете сделать это, если не используете extern "C" и c. По этому поводу есть вопросы:

Вы не требуется создавать C API для вашего класса, потому что есть также Objective-C ++ (расширение .mm), и вы можете использовать C ++ непосредственно в этих файлах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...