4

我使用 LiveCode iOS 外部 SDK 创建了一个简单的外部。test.lcidl 文件如下:

external test

function testMyExternal
    return boolean

test.mm 文件如下:

bool testMyExternal(void) {
    return true;
}

test.ios 文件是默认的 Foundation 框架。

这就像它得到的一样简单,但它不会编译......为什么不呢?

4

2 回答 2

3

这个问题是在 LiveCode listserve 上提出的,我在这里提问和回答,因为答案对其他人有用。

这里有几个问题:

首先是 ios 文件,它指定框架和库以针对包括 Foundation 框架编译外部框架,但 .lcidl 文件中未指定 use objc-objects 子句。如果您不想使用目标 c 对象,请从 .ios 文件中删除基础框架。

其次是文件是一个.mm,它是Objective-C++,并且没有指定use c++-naming 子句。如果您不想要 C++,您可以将 C 的 .mm 更改为 .c 或 Objective-C 的 .m。

更多细节可以在文档的第 6.3 节中找到

于 2013-03-07T21:26:00.757 回答
2

蒙特设法回答了他自己的问题,但在这种情况下,外部是一个 .mm 文件,这意味着它的 obj-c++。这意味着您需要在 lcidl 文件中添加使用 c++ 命名,否则生成的胶水代码将查找 C 样式(未损坏)名称(C++ 'mangles' 函数名称以包含键入信息,以便它们可以重载)

于 2013-03-08T10:32:17.117 回答