C++ 从ObjC代码调用.mm类方法时编译错误
我正在尝试使用Adobe XMP Toolkit SDK将XMP附加到一些PNG文件。SDK提供了一些示例,我对其中一个进行了修改以满足我的需要。SDK是用C++编写的,所以我修改的示例类是.mm类。 这是一节课:C++ 从ObjC代码调用.mm类方法时编译错误,c++,ios,objective-c,xmp,C++,Ios,Objective C,Xmp,我正在尝试使用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 ( ar
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
}
但是当我试图编译时,我得到一个错误:
架构arm64的未定义符号:“\u OBJC\u CLASS\u$\ u XmpWriter”,
引用自:
Myclass.o中的objc类引用
我做错了什么?最后,我找到了一个例子,解决了这个问题 问题在于我在.mm类中调用方法的方式。我必须在以下方面进行更改:
+ (void) attachXMPToImage:(NSString*)rdf imageName:(NSString*)imageName software:(NSString*)software softVersion:(NSString*)softVersion referencia:(NSString*)referencia fecha:(NSString*)fecha
From:它支持Macintosh、Windows以及UNIX。没有关于IOS的文字。它也支持IOS,并且所需的静态库是为IOS编译的。若你们有源代码,那个么这应该不会是一个问题:在你们的工作区中添加新的项目作为静态库,用它们将库链接到你们的应用程序。
[XmpWriter attachXMPToImage:nil
imageName:k_IMAGE_NAME
software:@"My iOS App"
softVersion:@"v. 1.0"
referencia:@""
fecha:timeString];
+ (void) attachXMPToImage:(NSString*)rdf imageName:(NSString*)imageName software:(NSString*)software softVersion:(NSString*)softVersion referencia:(NSString*)referencia fecha:(NSString*)fecha