佬,同一段代码,在32位架构下可以添加ObjectNode 和 VariableNode,64位架构下无法创建ObjectNode 以及后继的VariableNode(单独添加可以),网上找不到其他的解答。代码和截图如下:
//创建祖父节点
std::string parentName("INTEGER");
UA_NodeId SystemObjectId = UA_NODEID_STRING(1, (char *)parentName.c_str());
UA_ObjectAttributes system = UA_ObjectAttributes_default;
system.displayName = UA_LOCALIZEDTEXT((char *)"en-US", (char *)parentName.c_str());
UA_StatusCode status1 = UA_Server_addObjectNode(server,
SystemObjectId, //传入的自身节点ID
UA_NODEID_NUMERIC(0, UA_NS0ID_OBJECTSFOLDER), //定义在哪个节点下创建对象
UA_NODEID_NUMERIC(0, UA_NS0ID_ORGANIZES), //父节点引用类型的Id
UA_QUALIFIEDNAME(1, (char *)parentName.c_str()), //BrowseName名字定义
UA_NODEID_NUMERIC(0, UA_NS0ID_BASEOBJECTTYPE), //类型的定义
system, //对象属性
NULL, NULL);
if (status1 == UA_STATUSCODE_GOOD) {
printf("yeye节点添加成功!\n");
} else {
printf("yeye节点添加失败,错误码:%s\n", UA_StatusCode_name(status1));
}