Skip to content

Resolve "Native C:使用vf接口作为输入数据遇到的问题"

mingfa.yang requested to merge 438-native-c-vf into 402-native-c-2

Closes #438

1. 若用户定义的Class继承实例化的模板类型,则基类与派生类互转接口名存在问题。

原生接口

class Derived : public std::vector<int>{}

基类与派生类互转接口名错误翻译

CPP2X_ABI void * N_data5_derived_to_std_vector<int>(void * self);
CPP2X_ABI void * N_std_vector<int>_to_data5_derived(void * self);

方案:优化class_name_to_function_name接口生成正确的函数名

2. 对于仅有前置声明类型,相关接口翻译出来编译会报错,应当过滤掉。如vf中 class ToolGraph;

方案:检查参数与返回值类型,如果存在没有定义的自定义类型,直接过滤

3. STL类型中模板类型为仅有前置声明,STL相关接口翻译出来编译会报错。若STL类型中模板类型存在定义,但是可能没有引用定义的头文件,STL相关翻译接口会编译报错。

方案:a. 检查参数与返回值类型,如果存在没有定义的自定义类型,直接过滤。b. STL的头文件翻译中,在ClassDefineHeaderCollector中寻找相关头文件并include

4. 智能指针类型的模板类型若不存在拷贝构造函数,则智能指针的构造接口中 std::make_shared<T>(*static_cast<T *>(value))会编译报错。

方案:优化_can_construct_smart_ptr_from_value接口,若wrapper类型不存在拷贝构造,则不生成智能指针的构造接口

5. STL的wrapper类型若为const类型,翻译会出错。

方案:暂时过滤掉此类接口

Edited by mingfa.yang

Merge request reports

Loading