У меня есть заголовочный файл с определением:
typedef enum acamera_metadata_enum_android_lens_facing {
// enumeration
} acamera_metadata_enum_android_lens_facing_t;
Проблема в том, что когда я пытаюсь объявить это перечисление как член моего класса, компилятор не может найти определение (заголовок найден).
../../../../src/main/cpp/include/camera_manager.h:41:9: error: unknown type name 'acamera_metadata_enum_android_lens_facing_t'
acamera_metadata_enum_android_lens_facing_t facing;
Это мой заголовок класса:
#ifndef DAVINCI_CAMERA_MANAGER_H
#define DAVINCI_CAMERA_MANAGER_H
#include <map>
#include <string>
#include <camera/NdkCameraManager.h>
#include <camera/NdkCameraError.h>
#include <camera/NdkCameraDevice.h>
#include <camera/NdkCameraMetadataTags.h> // The enumeration is defined here
#include <media/NdkImageReader.h>
namespace DaVinci {
class CameraId;
class CameraManager {
struct ACameraManager *_manager;
std::map<std::string, CameraId> _cameras;
std::string _activeCameraId;
int32_t _cameraFacing;
int32_t _cameraOrientation;
bool _valid;
public:
CameraManager();
~CameraManager();
};
// helper classes to hold enumerated camera
class CameraId {
public:
struct ACameraDevice *device;
std::string id;
acamera_metadata_enum_android_lens_facing_t facing;
bool available; // free to use ( no other apps are using
bool owner; // we are the owner of the camera
explicit CameraId(const char *id);
explicit CameraId();
};
};
#endif //DAVINCI_CAMERA_MANAGER_H
Где может быть проблема?
Постскриптум Я использую C ++ 14, если это важно.
ОБНОВЛЕНО
Я создал хранилище с моим проектом: https://bitbucket.org/ghostman2013/davinci_test
В вашем проекте app/build.gradle
у тебя есть minSdkVersion
установить на 21.
Родные API камеры были добавлены на уровне API 24.
Так что вы можете а) увеличить свой minSdkVersion
до 24 или выше, или B) Не использовать собственные API-интерфейсы камеры в вашей библиотеке.
Других решений пока нет …