ECL嵌入C++时传递数据集参数报错System error 99的问题排查
ECL嵌入C++函数调用外部数据集报错问题
正常运行场景:硬编码数据集
当将硬编码的数据集传入ECL嵌入的C++函数时,代码可正常执行,最终输出为4555。该数据集是包含十六进制数据的BLOB类型分片文件。
参考ECL与C++映射文档,示例代码如下:
inRec := { DATA1 id }; ds := DATASET([x'45', x'55'], inRec); DATA traceDataset(DATASET(inRec) input) := EMBED(C++) #include <stdio.h> #include <unordered_map> using namespace std; #body __lenResult = 2; __result = (void *)(input+0); ENDEMBED; OUTPUT(traceDataset(ds)); // 最终输出为4555
报错场景:传入外部数据集
当传入外部数据集时,无法在C++嵌入函数内访问数据集的单个字节,报错信息为:
'System error: 99: Attempt to execute an activity that has not been created'
相关代码如下:
rawrec := RECORD DATA1 block END; rawds := DATASET('~.::bitcoinraw',rawrec,FLAT); DATA traceDataset(DATASET(rawrec) input) := EMBED(C++) #include <stdio.h> #include <unordered_map> using namespace std; #body __lenResult = 2; __result = (void *)(input+0); ENDEMBED; OUTPUT(traceDataset(rawds));
内容的提问来源于stack exchange,提问作者ANAGHA ANAND
相关产品推荐
相关产品推荐

