VAPS XT入门教程16:错误

系列索引:VAPS XT入门教程索引

上一篇:VAPS XT入门教程15.20:国产化高仿

本章整合了开发、使用VAPS XT过程中可能遇到的问题、错误,及其解决方法。

inaccessible within this context

在RK3588S板卡下编译Linux ARM VAPS XT软件依赖库时会出现这个inaccessible within this context错误。

1
2
3
4
5
6
7
8
9
10
11
12
13
In file included from ../vxtBaseClsVideoController.h:32,
from ../vxtBaseClsVideoController.cpp:11:
/home/hyper/VAPS_XT_4_2_1/src/XTObjects/VideoObjects/VideoSourceTableElement/vxtClsVideoSourceTableElement.h: At global scope:
/home/hyper/VAPS_XT_4_2_1/src/XTObjects/VideoObjects/VideoSourceTableElement/vxtClsVideoSourceTableElement.h:142:71: error: ‘class vxtRTDoubleListNodeT<vxtRTObject> vxtRTDoubleListNodeT<vxtRTObject>::vxtRTDoubleListNodeT’ is inaccessible within this context
142 | ct VXTCLSVIDEOSOURCETABLEELEMENT_SPEC ObserverNode : public vxtRTDoubleListNodeT<ObserverNode>
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

In file included from /home/hyper/VAPS_XT_4_2_1/src/RT/include/vxtRTObject.h:46,
from /home/hyper/VAPS_XT_4_2_1/src/RT/include/vxtRTTableElement.h:55,
from /home/hyper/VAPS_XT_4_2_1/src/XTObjects/VideoObjects/VideoSourceTableElement/vxtBaseClsVideoSourceTableElement.h:35,
from /home/hyper/VAPS_XT_4_2_1/src/XTObjects/VideoObjects/VideoSourceTableElement/vxtClsVideoSourceTableElement.h:35,
from ../vxtBaseClsVideoController.h:32,
from ../vxtBaseClsVideoController.cpp:11:

找到/home/hyper/VAPS_XT_4_2_1/src/XTObjects/VideoObjects/VideoSourceTableElement/vxtClsVideoSourceTableElement.h的142行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
private:
struct ObserverNode;
struct VXTCLSVIDEOSOURCETABLEELEMENT_SPEC ObserverNode : public vxtRTDoubleListNodeT<ObserverNode>
{
ObserverNode() : pObj(VXT_NULL) {}

ObserverI *pObj;
};

// Disallow copy
Index(const Index &a_rOther);
Index& operator = (const Index &a_rOther);

ObserverNode m_ObserverNode;

修改为

1
struct VXTCLSVIDEOSOURCETABLEELEMENT_SPEC ObserverNode : public ::vxtRTDoubleListNodeT<ObserverNode>

问题原因未知。

Windows was unexpected at this time

如果你在编译VAPS XT程序时,输出日志窗口Output窗口输出

1
\Windows

错误

后就没有其他信息了。

这个是因为环境变量出现异常。

打开系统环境变量界面,一行应该只有一个变量。如果一行有多个用;分隔的变量,那就把它拆分成一行一个。

或者直接全部删除,只保留%VAPSXT_DIR%\bin;%SystemRoot%\system32

仔细排查PATH环境变量

环境变量

无法生成代码

在VAPS XT编辑器中生成代码或者编译程序时,点击Generate Code或者Build后,输出窗口显示

1
C:\Presagis\VAPS_XT_4_2_1\bin64\CodeGen.exe "C:\Presagis\VAPS_XT_4_2_1\Projects\StandardRootProjects\Standard.vrpj" -build  PFDExample.vcls -tgt wogl64_vc142.cfg -jobs 

然后下面没有了

既没有报错,也没有提示生成成功或者失败,什么提示都没有。

解决

哪怕VAPSXT_DIR存在,PATH中也有%VAPSXT_DIR%\bin,也提示这个错误。

这个就是codegen.exe依赖的dll不在环境变量的问题,打开环境变量,把vapsxt.exe所在目录添加到Path中就可以了。(完整路径)

一般是安装多个不同版本会出现这个问题。

我猜测是内部一些变量在版本切换时没有及时更新

内存不足

如果VAPS XT工程中有太多的图片占用大量内存,导致工程无法编译,报错

1
2
3
4
5
6
Linking ...
Test_wogl.exe
Output file switched to buffered mode at 0x60428340
LINK: fatal error LNK1102: Out of memory
gmake: ***[Error] 78
...

群友提供了一种方法将Settings-> Root Project Settings -> CODE nGEN -> A661SetParameterBufferSizeInBytes调大一点,比如512621440

或者使用VAPS XT入门教程15.09:大工程集成开发与编译或者VAPS XT入门教程15.04:动态加载图片

推广

下一篇:VAPS XT入门教程17:终章

技术交流群,欢迎加入讨论。这个圈子很小,大佬可能没兴趣加这些群聊社区之类的。所以只能带你入门,当然,欢迎大佬指导

qq 672991841


VAPS XT入门教程16:错误
https://blog.jackeylea.com/vapsxt/error-of-using-vapsxt/
作者
JackeyLea
发布于
2024年1月18日
许可协议