编译从ObjC代码调用.mm类方法的错误

时间:2018-01-09 07:52:24

标签: 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 ( 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”,   引自:         Myclass.o中的objc-class-ref

我做错了什么?

1 个答案:

答案 0 :(得分:0)

最后,我找到了一个例子,我已经解决了这个问题。

问题在于我在.mm类中调用方法的方式。我不得不改变它:

+ (void) attachXMPToImage:(NSString*)rdf imageName:(NSString*)imageName software:(NSString*)software softVersion:(NSString*)softVersion referencia:(NSString*)referencia fecha:(NSString*)fecha