2017-01-27 4 views
3

C++ファイルからObjective C関数を呼び出したいとします。 C++ファイル(Algebra.cpp)のObjective Cファイル(UnZip.h)にヘッダーをインクルードするとビルドが失敗しますか?それについてどうすればいいですか? Algebra.cppのMath.hへの参照をすべて削除しても、すべてがうまくいきます。 Algebra.cppの名前をAlgebra.mmに変更することはできません。別の場所で複数の場所で使用されているからです。C++ファイルからObjective Cヘッダーファイルを呼び出すにはどうすればよいですか?

ファイル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); 
    --- 
} 
+0

C++とは、Objective-C++または普通のC++を意味しますか? –

+0

私は普通のC++を意味していました。 – JayHawk

+0

私の観察によれば、なぜあなたはそれを必要とするクラスで直接関数を作成することができます別のクラスを作成する単一の関数ですか? – CodeChanger

答えて

0

(私はあなたがXcodeでこれをやっていると仮定?)

1)「表示」メニュー - >「ナビゲーター」 - >「プロジェクトを表示」ナビゲーター "(CMD-1)

2)ナビゲータペインで(プロジェクトウィンドウの左側)あなたのファイルを選択します()

3) "表示" メニュー - > "ユーティリティ" - >" 表示ファイルインスペクタ4)上の2番目のコントロールは "Type"でなければならず、その値はおそらく "Default - C++ Source"であることに注意してください。(cmd-option-1)

それを "Objective-C++ Source"に変更してください。

Xcodeは、そのファイルをObject-C++ファイルとしてビルドします。完了!

関連する問題