1

Xcode build 打印此错误。

未定义符号:
“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;
}

我引用并使用了这个:

渲染器.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 回答