从 ObjC 代码调用 .mm 类方法时编译错误
Compile error calling .mm class method from ObjC code
我正在尝试使用 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 in Myclass.o
我做错了什么?
最后,我已经能够找到一个例子并解决了问题。
问题在于我在 .mm 类中调用该方法的方式。我不得不将其更改为:
+ (void) attachXMPToImage:(NSString*)rdf imageName:(NSString*)imageName software:(NSString*)software softVersion:(NSString*)softVersion referencia:(NSString*)referencia fecha:(NSString*)fecha
相关文章:
- std::is_base_of表示ctor编译错误
- Qt5:使用QCommandLineParser类时出现奇怪的编译错误
- 如何修复sfml c++代码编译错误
- 使用 MATLAB 编码器生成C++代码:编译错误"undefined reference to `rgb2gray_tbb_real64'"
- 使用外部SDK工具链文件在VisualStudio上生成项目编译错误
- vscode下的Arduino代码出现意外编译错误
- 第三方 API 中的编译错误 - Visual Studio
- std::cout输出int时出现编译错误
- 奇怪的代码抛出编译错误模板< J,int aSize=10> C2143:语法错误:在"<"之前缺少";"
- 提升图广度优先搜索前置编译错误
- C++ 中的编译错误:未定义对"主"的引用 collect2:错误:ld 返回 1 个退出状态
- 使用带有 ref 参数的成员函数创建线程时出现编译错误
- 我在C++中遇到了这个奇怪的编译错误
- 在C++中使用 Catch 测试框架编译错误"error: expected ';' at end of declaration list"
- 使用 std::enable_if 限制派生类的模板参数时出现编译错误
- 现代OpenGL和GLEW Libraray的编译错误
- C++ 编译错误:意外的类型名称"字符串":预期的表达式
- C ++程序编译错误,找不到/访问文件
- 使用直接大括号初始化时,C++ 编译错误"声明末尾的预期";"
- 为什么传递非静态成员函数会导致编译错误?