我正在尝试通过包装Objective-C ++来集成使用C ++ armadillo库和Swift的C ++库。为此,我完成了包含正确的头和库搜索路径以及设置正确的链接器参数的一般过程,但是只要我在任何.mm
文件中包含armadillo库,我就会获得一系列编译参数,大多数其中
Expected member name or ';' after declaration specifiers
'T' does not refer to a value
Expected unqualified-id
大多数错误似乎都位于模板类型附近。
编辑:经过一番探索后,似乎所有问题都源于一个名为“check”的函数。这些功能似乎不止一个,所以我不确定这个问题。有时函数被称为方法,即promote_type<eT1,eT2>::check();
,有时它自己被调用,即template<typename X> static yes& check(typename X::Mat_fixed_type*);
所有错误都指向以某种身份调用check
的函数,所以我假设这就是问题的根源,但我不知道这与我与目标C ++集成的事实有什么关系(错误不会出现在常规的c ++项目中)。
答案 0 :(得分:0)
解决方案实际上非常简单,涉及修复命名问题。只需将__ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES=0
添加到预处理器宏中即可。