递归火山软件开发平台

标题: [求助] 火山 这 @别名 怎么用啊! [打印本页]

作者: z13228604287    时间: 2023-4-21 17:06
标题: [求助] 火山 这 @别名 怎么用啊!
本帖最后由 z13228604287 于 2023-4-21 17:09 编辑

模块定义:
<火山程序 类型 = "通常" 版本 = 1 />

类 视觉_标量 <公开 @别名 = "cv.Scalar">
{
    方法 标量 <公开 静态 类型 = 视觉_标量 @嵌入式方法 = "" "">
    参数 a <类型 = 小数>
    参数 b <类型 = 小数>
    参数 c <类型 = 小数>
    参数 d <类型 = 小数>
    {
        @ @dt<视觉_标量> (@<a>,@<b>,@<c>,@<d>)
    }

    #
}




调用:

<火山程序 类型 = "通常" 版本 = 1 />

变量 颜色 <类型 = 视觉_标量>
颜色 = 视觉_标量.标量 (1, 2, 3, 4)


报错:
<E:\VolcanoSoftwarePC_Project\OpenCV\src\main.v>, 1: 错误:
    error C3083: “对象类”:“::”左侧的符号必须是一种类型
    error C2039: "sGetRuntimeClass": 不是 "cv::Scalar_<double>" 的成员
    E:\VolcanoSoftwarePC_Project\OpenCV\x64\include\opencv2/core/types.hpp(696): note: 参见“cv::Scalar_<double>”的声明
    error C3861: “sGetRuntimeClass”: 找不到标识符
编译生成目标文件"E:\VolcanoSoftwarePC_Project\_int\OpenCV\debug\x64\linker\OpenCV.exe"失败
--- 项目"OpenCV"编译或链接失败. 编译过程中共遇到了 0 个警告, 2 个错误.



作者: hcwanz    时间: 2023-4-21 18:36
别名不是给类改个名字这么简单。你需要为这个类准备一个c++类,而且这个c++类也不是简单的空类就行,还需要加一些火山需要的成员
像字节集类的对应c++类就在本地文件的
*\win_chs_person\plugins\vprj_win\classlib\sys\base\libs\win_base\include\vol_mem.h里
作者: z13228604287    时间: 2023-4-21 18:50
hcwanz 发表于 2023-4-21 18:36
别名不是给类改个名字这么简单。你需要为这个类准备一个c++类,而且这个c++类也不是简单的空类就行,还需要 ...

error C3083: “对象类”:“::”左侧的符号必须是一种类型
    error C2039: "sGetRuntimeClass": 不是 "cv::Scalar_<double>" 的成员
    E:\VolcanoSoftwarePC_Project\OpenCV\x64\include\opencv2/core/types.hpp(696): note: 参见“cv::Scalar_<double>”的声明
    error C3861: “sGetRuntimeClass”: 找不到标识符


怎么解决
作者: hcwanz    时间: 2023-4-21 19:02
z13228604287 发表于 2023-4-21 18:50
error C3083: “对象类”:“::”左侧的符号必须是一种类型
    error C2039: "sGetRuntimeClass": 不是 " ...

看字节集类是怎么写的
作者: dengzf    时间: 2023-4-21 19:26
<volprg type = "normal" version = 1 />

# 建立一个别名类的内容,初级用户无需理解下面的C++代码.
# @begin
# <> <global>
# <> <include>
# class CMyTestAliasClass : public CVolObject
# {
#     DECLARE_GLOBAL_EMPTY_VOL_CLASS (CMyTestAliasClass)
#
# public:
#     inline_ CMyTestAliasClass () : m_str (_T ("我的测试文本"))  { }
#     CVolString AddContent (const CVolString& str1);
#
# protected:
#     CVolString m_str;
# };
# <> </include>
#
# CVolString CMyTestAliasClass::AddContent (const CVolString& str1)
# {
#     m_str.AddText (_T (" - "));
#     m_str.AddText (str1);
#     return m_str;
# }
# <> </global>
# @end

class 我的测试别名类 <public @别名 = "CMyTestAliasClass">
{
    method 加入内容 <public static type = 文本型 @禁止流程检查 = 真>
    param 所欲操作的本对象 <type = 我的测试别名类>
    param 参数1 <type = 文本型>
    {
        @ return @<所欲操作的本对象>.AddContent (@<参数1>);
    }
}

#

作者: z13228604287    时间: 2023-4-21 19:41
dengzf 发表于 2023-4-21 19:26
# 建立一个别名类的内容,初级用户无需理解下面的C++代码.
# @begin
#  

这是啥  怎么看不懂!
作者: Xelloss0618    时间: 2023-4-21 20:37
不是跟你说过,别名的C++类必须继承 CVolObject 对象类,不是你随便找个源码就能封装的。
像你搞 OpenCV 这个,别名需要改动它的源码,成本有些高,不建议用别名封装。




欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4