八位事?c(5):error:a jni error has occurredC129: missing ';' before 'code' 这个怎么解决 懵了0.0

    • 以上的依赖已经完成了编译和配置后, 依赖的路径是这样的
    • 用CMake编译最麻烦的地方还是需要自己手动写多个CMakeLists.txt. Mitsuba中包括了很多个不同的插件, 所以最后整个工程中项目非常多. 目前个人的Github上已经完成了CMake的编译~
    1. 项目根目录下新建文件夹cbuild, 注意不是在build下编译(因为那里已经有多个SCons编译相关的文件, 直接编译在那里会把很多文件混在一起).
    2. 完成, 可以按正常的VS项目开发/Debug了.
    • 这里的部分配置会涉及到依赖的版本, 如果你的环境/依赖与我不同, 请自行做微调(例如v142调成v141, Qt的安装目录做些修改之类的). 最关键的就是, 要把你的依赖名称/目录写正确, 让编译器能够找到这个依赖.
    • SConstruct中可能会用到has_key, 这是当前不支持的语法, 所以会发生报错:
    • 存在多个SConstruct文件, 这些文件都需要修改
    • 34行的Python版本需要自行添加
    • 建议将检查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版本, 但该版本依旧在踩坑中(已完成)

我要回帖

更多关于 int main()为什么出错 的文章

 

随机推荐