递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 5222|回复: 6
打印 上一主题 下一主题

[视窗] [求助] 火山 这 @别名 怎么用啊!

[复制链接]

8

主题

17

帖子

89

积分

注册会员

Rank: 2

积分
89
跳转到指定楼层
楼主
发表于 2023-4-21 17:06:13 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 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 个错误.


回复

使用道具 举报

26

主题

1900

帖子

6926

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6926
7#
发表于 2023-4-21 20:37:55 | 只看该作者
不是跟你说过,别名的C++类必须继承 CVolObject 对象类,不是你随便找个源码就能封装的。
像你搞 OpenCV 这个,别名需要改动它的源码,成本有些高,不建议用别名封装。
回复

使用道具 举报

8

主题

17

帖子

89

积分

注册会员

Rank: 2

积分
89
6#
 楼主| 发表于 2023-4-21 19:41:13 | 只看该作者
dengzf 发表于 2023-4-21 19:26
# 建立一个别名类的内容,初级用户无需理解下面的C++代码.
# @begin
#  

这是啥  怎么看不懂!
回复

使用道具 举报

40

主题

567

帖子

4070

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
4070
5#
发表于 2023-4-21 19:26:29 | 只看该作者
<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>);
    }
}

#
回复

使用道具 举报

69

主题

990

帖子

4470

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
4470
地板
发表于 2023-4-21 19:02:29 | 只看该作者
z13228604287 发表于 2023-4-21 18:50
error C3083: “对象类”:“::”左侧的符号必须是一种类型
    error C2039: "sGetRuntimeClass": 不是 " ...

看字节集类是怎么写的
回复

使用道具 举报

8

主题

17

帖子

89

积分

注册会员

Rank: 2

积分
89
板凳
 楼主| 发表于 2023-4-21 18:50:01 | 只看该作者
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”: 找不到标识符


怎么解决
回复

使用道具 举报

69

主题

990

帖子

4470

积分

核心用户

Rank: 9Rank: 9Rank: 9

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-11-24 12:06 , Processed in 0.084115 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表