Я пытаюсь использовать Adobe XMP Toolkit SDK, чтобы прикрепить XMP к некоторым файлам PNG. SDK предоставляет несколько примеров, и я изменил один из них, чтобы соответствовать моим потребностям. SDK написан на C ++, поэтому пример класса, который я изменил, — это класс .mm.
Это класс:
void attachXMPToImage ( string * rdf, string imageName, string software, string softVersion, string referencia, string fecha )
{
// if ( argc != 2 ) // 2 := command and 1 parameter
// {
// cout << "usage: ModifyingXMP (filename)" << endl;
// return 0;
// }
string filename = imageName;
string rdfFile = *rdf;
if(!SXMPMeta::Initialize())
{
cout << "Could not initialize toolkit!";
// return -1;
}
XMP_OptionBits options = 0;
#if UNIX_ENV
options |= kXMPFiles_ServerMode;
#endif
}
Я не публикую весь класс, поскольку проблема заключается в вызове этого метода из моего кода ObjC.
Этот класс имеет свой собственный заголовок, который выглядит следующим образом:
#import <Foundation/Foundation.h>
@interface XmpWriter : NSObject
+ (void)attachXMPToImage:(NSString*)rdf
imageName:(NSString*)imageName
software:(NSString*)software
softVersion:(NSString*)softVersion
referencia:(NSString*)referencia
fecha:(NSString*)fecha;
@end
Затем из одного из моих других классов я пытаюсь вызвать этот метод:
[XmpWriter attachXMPToImage:nil
imageName:k_IMAGE_NAME
software:@"My iOS App"softVersion:@"v. 1.0"referencia:@""fecha:timeString];
но когда я пытаюсь скомпилировать, я получаю сообщение об ошибке:
Неопределенные символы для архитектуры arm64: «_OBJC_CLASS _ $ _ XmpWriter»,
ссылка от:
objc-class-ref в Myclass.o
Что я делаю неправильно?
В конце я смог найти пример и решил проблему.
Проблема была в том, как я назвал метод в классе .mm. Я должен был изменить это в:
+ (void) attachXMPToImage:(NSString*)rdf imageName:(NSString*)imageName software:(NSString*)software softVersion:(NSString*)softVersion referencia:(NSString*)referencia fecha:(NSString*)fecha
Других решений пока нет …