我成功地将Scintilla框架添加到我的XCode项目中(即它正确地找到了头文件),但是因为它是用Objective-C ++编写的,所以它不会编译。由于::
s,我得到8个语法错误。我已经发现您无法从纯Objective-C文件中包含Objective-C ++,因此我将文件扩展名更改为mm
。它仍然给我相同的8个错误
我还将(导入文件的)文件类型更改为sourcecode.cpp.objcpp
。
相关的代码行(注释中的错误 - 行号来自原始文件,因此没有注释中的错误):
ScintillaView.h
// Line 47-49
@protocol ScintillaNotificationProtocol
- (void)notification: (Scintilla::SCNotification*)notification; // 4 errors on this line:
// 1. expected type-specifier
// 2. expected ')'
// 3. expected identifier
// 4. expected ';'
@end
// [snip]
// Line 131
- (void) notification: (Scintilla::SCNotification*) notification; // The exact same errors.
复制此代码时,我注意到::
运算符在文件中使用了几次,所以解析器只能在某些地方成功匹配它。
此代码不再是我的,而是来自Scintilla Cocoa Library。
(有关详细信息,请参阅此处:http://www.scintilla.org/)
XCode 3.2.6,Mac OS X 10.6.8
答案 0 :(得分:0)
添加
typedef tdSCNotification Scintilla::SCNotification
在第一个违规行显示该命名空间中没有名为SCNotification
的类型之前。所以我搜索了namespace Scintilla {
包含的头文件(幸运的是,只计算了三个)。它位于第一个包含的头文件Scintilla.h
中。但它看起来像这样:
#ifdef SCI_NAMESPACE
namespace Scintilla {
#endif
和
#ifdef SCI_NAMESPACE
}
#endif
所以我认为SCI_NAMESPACE没有定义。我在网上某处向#define SCI_NAMESPACE
添加了Scintilla.h
45并且有效。几乎。我收到了另一条错误消息:
未找到框架Scintilla
命令/Developer/usr/bin/llvm-g++-4.2因退出代码1而失败
我认为这与我在项目中添加框架的方式有关,因此它应该是一个单独的问题。