1

Xcodeビルドはこのエラーを出力します。

未定義のシンボル:
"EGViewportDimensionMake(unsigned int、unsigned int、unsigned int、unsigned int)"、参照元:-[Renderer render] in Renderer.o ld:シンボルが見つかりませんcollect2:ldが1つの終了ステータスを返しました

何が問題なのかわかりません。私は古典的なC構文が得意ではありません。関数のソースコードファイルは次のとおりです。

EGViewportDimension.h

#import <Foundation/Foundation.h>

struct EGViewportDimension
{
    NSUInteger x;
    NSUInteger y;
    NSUInteger width;
    NSUInteger height;
};
typedef struct EGViewportDimension EGViewportDimension;

EGViewportDimension EGViewportDimensionMake(NSUInteger x, NSUInteger y, NSUInteger width, NSUInteger height);

EGViewportDimension.m

#import "EGViewportDimension.h"

EGViewportDimension EGViewportDimensionMake(NSUInteger x, NSUInteger y, NSUInteger width, NSUInteger height)
{
    EGViewportDimension dim;
    dim.x = x;
    dim.y = y;
    dim.width = width;
    dim.height = height;
    return dim;
}

私はこれを次のように参照して使用しました:

Renderer.mm

#import "EGViewportDimension.h"

//.... many codes omitted.

EGViewportDimension vdim = EGViewportDimensionMake(0, 0, backingWidth, backingHeight);
4

2 に答える 2

0

これはコンパイラではなく、リンカの問題です。からこのメソッドを参照しまし[Renderer render]たが、リンカはそれを見つけることができません。EGViewportDimension.h適切な場所(Renderer.mなど)に含まれていることを確認しましたか?

于 2010-02-06T15:29:27.040 に答える
0

Renderer.mmの名前をRenderer.mに変更して解決しました。いくつかのC++クラスを使用していたので、Objective-C ++コードとして作成しましたが、問題がありました。すべてのC++呼び出しを削除し、Objective-Cコードに名前を変更しました。

しかし、古典的なC関数定義を使用したObjective-C++の何が問題なのかはまだわかりません。

- - (編集) - -

別の質問としてこれを聞いたところ、答えが返ってきました。ここを参照してください: Objective-C ++クラスのメソッド本体からクラシックC関数を呼び出すことは禁止されていますか?

于 2010-02-06T15:51:52.350 に答える