OpendTect4.0.1在Windows的编译过程,在Debug状态下运行出R6034错,Release状态下可以运行!...

本文记录了OpendTect 4.0.1从准备环境、编译过程到运行时遇到的各种问题及解决办法,如QT、Coin-3.1.3、FFTW3.2.2等组件的配置,以及解决R6034错误的经历。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  忙活了几天的OpendTect4.0.1的编译安装,终于编译通过,但Release可以运行,DEBUG却出现R6034错误。


  把杂乱的过程记下来:



一、准备工作


(1) VisualStudio 2005是必须的,好像也可以用2008,但官方推荐用2005。


(2) 安装VisualStudio 2005 SP1,这是QT4.5.0要求装的,安装这个东西用了好长时间,内存占用700多M。


(3) 安装QT 4.5.0,要了个commerical版本的,相当好用,普通版可能在编译时找不到Qtcore4.lib等库文件。


(4) 安装Coin-3.1.3,把所有文件放到一个目录中即可。


(5) 安装FFTW3.2.2,也是放到某个目录中即可。


(6) 安装OpendTect-4.0.1,我是安装的developer版的



二、编译过程
(1) 在opendTect的目录中有一个msvc子目录,里面有一个odvars_example.bat文件,改名为odvars.bat 然后修改各个环境变量的值与你前面安装的软件相对应。


(2) 在编译前建议删除debug和intermediate目录中原来的所有文件,免得最后运行时编译用的lib和最后运行的dll不一致。


(3) 运行start_msvc_od.bat,会启动Visual Studio 2005,并打开OpendTect.sln工程文件。当然也可以直接启动Visual Studio 2005,然后打开OpendTect.sln工程文件,但需要设置odvars.bat中的环境变量,直接在“我的电脑”右键中设置,主要的环境变量是QTDIR、COINDIR和WORK这三个。


(4) 先编译lib中Basic.dll, 如果这个能够编译成功,说明环境变量设置没有问题。如果在Moc-ing qtimercomm时出现问题,说明是QT的环境变量没有设置好,通常还需要在PATH中把C:/Qt/4.5.0/bin这样的路径加上。


(5) 再编译lib中的algo.dll,如果提示找不到libfftw3f-3.lib,则需要在VC++中设置lib路径,使其编译时能够找到libfftw3f-3.lib这个文件


(6) 再往下就会遇到simvoleon2.lib的问题了。从网上需下载SIM Voleon 2.0.0,那个2.0.1只是补丁,只下载2.0.1不行,会缺少一些头文件。


(7) 另外下载SoQt1.5.0.zip文件,是需要在Visual Studio 2005中编译的,编译后生成include和一些其它文件,自动放到coin-3.1.3的目录中了,还有soqt1.lib


(8) 经过一番折腾,终于编译通过了!



三、运行时


(1) 将fftw3f-3.dll、coin3.dll、soqt1.dll、simvoleon2.dll等文件复制到debug目录中
(2) 在环境变量PATH中加上d:/qt/4.5.0/bin,当然这个环境变量应该尽早加上
(3) 运行时一阵加载过后,弹出了缺少msvcp80.dll和msvcr80.dll文件,从C:/WINDOWS/WinSxS/x86_Microsoft.VC80.CRT目录中找到一个得到到C:/Windows/System32中
(4) 然后又提示说coin3.dll和coin2.dll不能同时加载,用depends工具检查依赖关系,原来从网上下载的simvoleon2.dll编译时用的coin2.lib,看来只能自己编译simvoleon2.dll了,只能从网上到处找simvoleon用coin3编译的版本,最后终于从这个网站http://hg.sim.no/SIMVoleon/default/file/0eb85216a1ad/build/msvc8上找到了源文件,经过一阵子编译,生成了simvoleon2.dll。


(5) 最后遇到的是著名的R6034错误。有说是manifest的问题,有说项目的依赖关系设置不准,有说链接时忽略msvcrt.lib库的,有说要清理注册表的,从这个网站中可以看到一些提示。


(6) 这个R6034问题折腾了我近2天,最终没有搞定。但在Release方式下编译后竟然可以顺利运行。真是太不可思议了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值