这个是2012年左右放在百度空间的,谁知百度空间关闭。。。转移到博客园。

最近项目用到3.1.2版本的LEDAPS,新版本的使用情况会在后续文章中慢慢丰富。

HuCal是将LEDAPS项目中的TM/ETM+大气校正流程系列算法中的辐射定标模块由linux系统移植到windows下的产物,代码本身改动不大,使用接口不变。

包含文件:

HuCal.exe

geotiff.dll

hd423m.dll

hm423m.dll

命令行调用示例:HuCal.exe空格D:\LEDAPS\lndcal.L5014033_03320060801.txt

遇到的问题及解决方案:

出现问题1:无法打开文件"LIBC.lib"。

解决:在“项目”-->“配置属性->链接器->输入->忽略特定库”后填入“LIBC.lib ”。

LIBC.lib介绍   google一下,libc.lib原来是被遗弃的可怜家伙。MSDN Labs: What''s New in Visual C++ 2005 Quote: The single-threaded CRT libraries, , msvcrt.lib, and msvcrtd.lib, . Use the multi-threaded CRT libraries. The /MD, /ML, /MT, /LD (Use Run-Time Library) compiler flag is no longer supported. Non-locking versions of some functions have been added in cases where the performance difference between the multithreaded code and the single-threaded code is potentially significant. 要解决问题的话,只要在链接设置那里忽略它就没问题了。下面再列点抄点总结: ?Run-Time Library是编译器提供的标准库,提供一些基本的库函数和系统调用。我们一般使用的Run-Time Library是C Run-Time Libraries。当然也有Standard C++ libraries。 C Run-Time Libraries实现ANSI C的标准库。VC安装目录的CRT目录有C Run-Time库的大部分源代码。 C Run-Time Libraries有静态库版本,也有动态链接库版本;有单线程版本,也有多线程版本;还有调试和非调试版本。 ?动态链接库版本:/MD Multithreaded DLL 使用导入库MSVCRT.LIB/MDd Debug Multithreaded DLL 使用导入库MSVCRTD.LIB ?静态库版本:/ML Single-Threaded 使用静态库LIBC.LIB/MLd Debug Single-Threaded 使用静态库LIBCD.LIB/MT Multithreaded 使用静态库LIBCMT.LIB/MTd Debug Multithreaded 使用静态库LIBCMTD.LIB 若要使用此运行时库请忽略这些库 单线程 (libc.lib) libcmt.lib、msvcrt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib 多线程 (libcmt.lib) libc.lib、msvcrt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib 使用 DLL 的多线程 (msvcrt.lib) libc.lib、libcmt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib 调试单线程 (libcd.lib) libc.lib、libcmt.lib、msvcrt.lib、libcmtd.lib、msvcrtd.lib 调试多线程 (libcmtd.lib) libc.lib、libcmt.lib、msvcrt.lib、libcd.lib、msvcrtd.lib 使用 DLL 的调试多线程 (msvcrtd.lib) libc.lib、libcmt.lib、msvcrt.lib、libcd.lib、libcmtd.lib

所以最后忽略的库包括:libc.lib;libcmtd.lib

出现问题2:代码中使用linux平台的头文件"unistd.h"。

解决:使用#include "unistd.h"替代#include <unistd.h>

并直接添加unistd.h文件到vs2005项目中。文件内容如下:

#ifndef _UNISTD_H

#define _UNISTD_H    1

/* This file intended to serve as a drop-in replacement for

*  unistd.h on Windows

*  Please add functionality as neeeded

*/

#include <stdlib.h>

#include <io.h>

#include "getopt.h" /* getopt from: http://www.pwilson.net/sample.html. */

#include <process.h> /* for getpid() and the exec..() family */

#define srandom srand

#define random rand

//const W_OK = 2;// 因为重复定义而注释掉

//const R_OK = 4;

#define access _access

#define ftruncate _chsize

#define ssize_t int

#define STDIN_FILENO 0

#define STDOUT_FILENO 1

#define STDERR_FILENO 2

/* should be in some equivalent to <sys/types.h> */

typedef __int8            int8_t;

typedef __int16           int16_t;

typedef __int32           int32_t;

typedef __int64           int64_t;

typedef unsigned __int8   uint8_t;

typedef unsigned __int16  uint16_t;

typedef unsigned __int32  uint32_t;

typedef unsigned __int64  uint64_t;

#endif /* unistd.h  */

文件中包含的getopt.h文件从网站 http://www.pwilson.net/sample.html. 下载。

这个解决方案是网上有人针对linux移植到windows所专门重写的代码,用的不多,需要验证。

出现问题3:代码中使用的相关库在linux平台与windows平台是不同的,需要逐个替换,主要是HDF4库、geotiff库与HDF-EOS库。

解决:

包含的静态库有:

geotiff_i.lib

libtiff_i.lib

ws2_32.lib

gctp.lib

hdfeos.lib

hd423m.lib

hm423m.lib

另外程序执行时需要动态库:geotiff.dll;hd423m.dll;hm423m.dll

出现问题4:代码执行过程内存一直在涨啊?最后能涨到300,原因不明,是代码本身的错误还是我移植的错?需要以后再仔细研究。

LEDAPS1.3.0版本移植到windows平台----HuCal定标模块的更多相关文章

  1. LEDAPS1.3.0版本移植到windows平台----HuSr大气校正模块

    这个是2012年左右放在百度空间的,谁知百度空间关闭...转移到博客园. 最近项目用到3.1.2版本的LEDAPS,新版本的使用情况会在后续文章中慢慢丰富. HuSr是将LEDAPS项目中的TM/ET ...

  2. LEDAPS1.3.0版本移植到windows平台----HuPm参数初始化模块

    这个是2012年左右放在百度空间的,谁知百度空间关闭...转移到博客园. 最近项目用到3.1.2版本的LEDAPS,新版本的使用情况会在后续文章中慢慢丰富. LEDAPS的调用顺序是:HuPm--&g ...

  3. LEDAPS1.3.0版本移植到windows平台----HuCsm云掩膜模块

    这个是2012年左右放在百度空间的,谁知百度空间关闭...转移到博客园. 最近项目用到3.1.2版本的LEDAPS,新版本的使用情况会在后续文章中慢慢丰富. HuCsm是将LEDAPS项目中的TM/E ...

  4. windows平台安装php_memcache模块

    要求 必备知识 熟悉基本编程环境搭建. 运行环境 windows 7(64位);php-5.3; memcached-1.2.6 下载地址 环境下载 什么是PHP Memcache模块 Memcach ...

  5. windows平台python svn模块的一个小 bug

    环境 编程语言版本:python 2.7 操作系统:win10 64位 模块名:svn svn  checkout时报错 File "D:\Python27\lib\site-package ...

  6. Java (JDK 多版本切换)—— Windows平台

    0. 背景 常常在不同的应用中需要用到不同版本的Java ,需要切换不同JAVA_HOME. 1. 方法 Step 1. 安装不同版本的JDK(JRE),最好都安装在一个Java目录分支下.例如: S ...

  7. Cocos2dx-3.0版本 从开发环境搭建(Win32)到项目移植Android平台过程详解

    作为重量级的跨平台开发的游戏引擎,Cocos2d-x在现今的手游开发领域占有重要地位.那么问题来了,作为Cocos2dx的学习者,它的可移植特性我们就需要掌握,要不然总觉得少一门技能.然而这个时候各种 ...

  8. 移植TensorFlow到Windows平台

    2015年11月,Google宣布开源旗下机器学习工具TensorFlow,引发业界热潮.TensorFlow原生支持*unix系和安卓平台,但并不提供对Windows平台的支持.如果想在Window ...

  9. 将Linux代码移植到Windows的简单方法

    一.前言 Linux拥有丰富各种源代码资源,但是大部分代码在Windows平台情况是无法正常编译的.Windows平台根本无法直接利用这些源代码资源.如果想要使用完整的代码,就要做移植工作.因为C/C ...

随机推荐

  1. Postgresql-模糊匹配大杀器

    # Postgresql-模糊匹配大杀器 ## 问题背景 随着pg越来越强大,abase目前已经升级到5.0(postgresql10.4),目前abase5.0继承了全文检索插件(zhparser) ...

  2. Gradle实现自动打包,签名,自定义apk文件名

    Gradle实现自动打包,签名,自定义apk文件名 什么是签名,签名有什么用 Android APP都需要我们用一个证书对应用进行数字签名,不然的话是无法安装到Android手机上的,平时我们调试运行 ...

  3. 【原】gulp工作中的实战

    写这篇文章的目的是为了以后的项目中懒得再去配gulp,直接可以拿这篇博客中的来用,因为有时候配置还是挺烦人的. gulp相关插件的介绍 用法比较简单,假设大家都会用gulp,下面主要介绍一下一些插件的 ...

  4. 原生js ajax请求

    什么是ajax AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新. 这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新, ...

  5. Talk In Web Security(安全世界观): Devleping a Secure WebSite

    Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket Reprint it anywhere u want. Why to write about Web ...

  6. C#4并行计算

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  7. 【原创】《windows驱动开发技术详解》第4章实验总结二

    1 实验要求(WDM驱动)     2 编写过程   2.1 确立整体架构   2.1.1 入口函数——DriverEntry   (1)作用 设置pDriverObject结构体,注册AddDevi ...

  8. CSS实例详解:Flex布局

    本文由云+社区发表 本文将通过三个简单的实例,实际应用上篇文章的基础理论知识,展示下Flex布局是如何解决CSS布局问题. 一.垂直居中 这里同时用非flex布局和flex布局两种方式来实现,可以对比 ...

  9. es6入门2--对象解构赋值

    解构赋值:ES6允许按照一定规则从数组或对象中提取值,并对变量进行赋值.说直白点,等号两边的结构相同,右边的值会赋给左边的变量. 一.数组的解构赋值: 1.基本用法 let [a, b, c] = [ ...

  10. OpenResty api网关设计

    本文讲述 OpenResty api网关设计,主要涉及api网关介绍.openresty api网关 请求路由(路由判断.路由重写.服务判断.限流).授权验证(统一认证).动态Upstream 以及这 ...