我使用 LiveCode iOS 外部 SDK 创建了一个简单的外部。test.lcidl 文件如下:
external test
function testMyExternal
return boolean
test.mm 文件如下:
bool testMyExternal(void) {
return true;
}
test.ios 文件是默认的 Foundation 框架。
这就像它得到的一样简单,但它不会编译......为什么不呢?
我使用 LiveCode iOS 外部 SDK 创建了一个简单的外部。test.lcidl 文件如下:
external test
function testMyExternal
return boolean
test.mm 文件如下:
bool testMyExternal(void) {
return true;
}
test.ios 文件是默认的 Foundation 框架。
这就像它得到的一样简单,但它不会编译......为什么不呢?
这个问题是在 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 节中找到
蒙特设法回答了他自己的问题,但在这种情况下,外部是一个 .mm 文件,这意味着它的 obj-c++。这意味着您需要在 lcidl 文件中添加使用 c++ 命名,否则生成的胶水代码将查找 C 样式(未损坏)名称(C++ 'mangles' 函数名称以包含键入信息,以便它们可以重载)