八位事?c(5):error:a jni error has occurredC129: missing ';' before 'code' 这个怎么解决 懵了0.0
来源:蜘蛛抓取(WebSpider)
时间:2022-11-03 06:09
标签:
int main()为什么出错
|
|
|
- 以上的依赖已经完成了编译和配置后, 依赖的路径是这样的
- 用CMake编译最麻烦的地方还是需要自己手动写多个
CMakeLists.txt
. Mitsuba中包括了很多个不同的插件, 所以最后整个工程中项目非常多. 目前个人的Github上已经完成了CMake的编译~
- 项目根目录下新建文件夹
cbuild
, 注意不是在build
下编译(因为那里已经有多个SCons编译相关的文件, 直接编译在那里会把很多文件混在一起).
- 完成, 可以按正常的VS项目开发/Debug了.
-
这里的部分配置会涉及到依赖的版本, 如果你的环境/依赖与我不同, 请自行做微调(例如v142调成v141, Qt的安装目录做些修改之类的). 最关键的就是, 要把你的依赖名称/目录写正确, 让编译器能够找到这个依赖.
-
SConstruct
中可能会用到has_key
, 这是当前不支持的语法, 所以会发生报错:
- 存在多个
SConstruct
文件, 这些文件都需要修改
- 建议将检查Qt5的异常捕获关闭, 因为我们需要编译Gui
- 这一部分需要修改的内容有点多, 不一一赘述. 但是修改的地方都会把原有内容注释掉
- 这部分主要负责将依赖拷贝至编译后的文件夹, 需要将依赖的版本, 路径等等写正确
- 或者直接参考"依赖列表"部分, 从github上下载
- 编译的步骤很简单, 直接在项目根目录下运行
scons
即可
- 编译时还会遇到编译/链接错误, 下面记录了个人遇到的错误, 发生的原因以及修改办法
- 如果你使用的是我的Github上修改的版本, 那么可以跳过这部分
-
编译时遇到的问题也许能够在这里找到答案
- 依赖更新后还需要对Mitsuba的源码做一些修改, 以适应新的版本, 下面是修改的记录(可能不全, 但是基本的Error都已经记录了下来, 并且说明了怎么进行修改)
- 建议使用VSCode进行内容查找
- 原因: OpenEXR更新后, 原有的
Imf::Int64
被替换为C++自带的64位整数int64_t
或者uint64_t
, 这里需要将报错的地方进行相应的替换. 另外, 替换的时候注意要根据父类的函数返回值和参数类型来替换
情况1: 命名空间相关错误
- 原因: xerces-c 4移除了一部分namespace相关宏定义, 需要手动将宏定义进行替换. 下面是需要替换的宏, 注意可能需要替换多个文件
情况2: 字符串指针问题
- 还是直接使用Mitsuba原来的依赖比较省心
-
SCons相比于CMake体验差的有点多, 后续打算更新一个cmake版本, 但该版本依旧在踩坑中(已完成)