如何从C++文件中调用一个Objective C头文件?

3
我希望从一个C++文件调用Objective C函数。当我在C++文件(Algebra.cpp)中包含Objective C文件(UnZip.h)的头文件时,构建失败了。我该怎么办?如果我在Algebra.cpp中删除对Math.h的任何引用,一切都可以正常构建。但我不能将Algebra.cpp的名称更改为Algebra.mm,因为它在其他多个地方被使用。
文件Math.h
void MathFormula(const char *sourceData, const char *answer);

文件 Math.m

#import <Foundation/Foundation.h>
#import "MathDocument.h"
void MathFormula(const char *sourceFile, const char *answer)
{
    NSString * sFile = [NSString stringWithUTF8String:sourceFile];
    NSString * ans = [NSString stringWithUTF8String:answer];
    MathDocument * mathDocument = [[MathDocument alloc] initWithPath:sFile];
    [mathDocument runFormula:ans];
}

Algebra.cpp

#include ...
#include Math.h
{
  ---
  const char * sourceFile = "/Users/u1/pckg.zip";
  const char * destPath = "/Users/u1";
  MathFormula(sourceFile, destPath);
  ---
}

当你说C++时,你是指Objective-C++还是普通的C++? - Sean Dawson
我指的是普通的C++。 - JayHawk
根据我的观察,为什么你要为单个函数创建不同的类呢?你可以直接在需要该函数的类中创建函数。 - CodeChanger
是的,你说得对。我可以直接在C++文件中创建它。但如果我尝试导入“MathDocument.h”,构建就会失败。我需要创建一个桥接器。我该怎么办? - JayHawk
1个回答

0

(我假设您是在 Xcode 中进行此操作?)

1)“视图”菜单 ->“导航器” ->“显示项目导航器”(cmd-1)

2)在导航器窗格中(项目窗口的左侧)选择您的文件()

3)“视图”菜单 ->“实用程序” ->“显示文件检查器”(cmd-option-1)

4)在实用程序窗格中(项目窗口的右侧),从顶部开始数第二个控件应该是“类型”,它的值可能为:“默认-C ++源代码”;将其更改为“Objective-C++源代码”。

Xcode现在将构建该文件作为一个Object-C++文件。完成!(完成!)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接