VS2017编译gsf/surf/mbio —E0020 未定义标识符 “F_OK“

news/2024/10/28 0:27:23/

1、编译gsf报了一个错误:

严重性    代码    说明    项目    文件    行    禁止显示状态
错误(活动)    E0020    未定义标识符 "F_OK"    gsf  

d:\OceanMultiBeamProc\OceanMultiBeamProc\gsf\gsf\gsf_indx.c    286

C语言中access/_access函数的使用_fengbingchun的博客-CSDN博客_c access

access函数用来判断指定的文件或目录是否存在(F_OK),已存在的文件或目录是否有可读(R_OK)、可写(W_OK)、可执行(X_OK)权限。F_OK、R_OK、W_OK、X_OK这四种方式通过access函数中的第二个参数mode指定。如果指定的方式有效,则此函数返回0,否则返回-1。

在Windows下没有access函数,但在<io.h>文件中有_access函数,声明如下:

int _access(const char* _Filename, int _AccessMode);
windows下的函数_access与linux下的access函数功能类似,用来判断指定的文件或目录是否仅存在(00),已存在的文件或目录是否有仅读(04)、仅写(02)、既可读又可写(06)权限。这四种方式通过_access函数中的第二个参数mode指定,如果mode传入的值不是0或2或4或6,调用此函数则会crash。如果指定的方式有效,则此函数返回0,否则返回-1。

F_OK =0

W_OK =2

R_OK= 4

X_OK=6

2、第二个错误:

严重性    代码    说明    项目    文件    行    禁止显示状态
错误    LNK2019    无法解析的外部符号 htonl,该符号在函数 gsfWrite 中被引用    gsf    D:\OceanMultiBeamProc\OceanMultiBeamProc\gsf\gsf.obj    1    

还有一种报错:

严重性    代码    说明    项目    文件    行    禁止显示状态
错误    LNK2001    无法解析的外部符号 __imp_gethostname    mbio    D:\OceanMultiBeamProc\OceanMultiBeamProc\mbio\mb_esf.obj    1    

htonl来自于winsock.h

对应的lib文件为WS2_32.Lib

编译mbaux需要gdal:

生成mbaux需要gdal,下载gdal2.2.1源代码,使用cmake生成VS2017项目,编译完成

但没有执行安装操作,install,libinstall,devinstall

在VS2017生成命令增加上面三个命令

nmake -f makefile.vc MSVC_VER=1910 WIN64=1 install && nmake -f makefile.vc MSVC_VER=1910 WIN64=1 libinstall && nmake -f makefile.vc MSVC_VER=1910 WIN64=1 devinstall

3、第三个错误:

错误(活动)    E1696    无法打开 源 文件 "unistd.h"    mbaux    d:\OceanMultiBeamProc\OceanMultiBeamProc\mbaux\mbaux\mb_readwritegrd.c    27

windows下VS 无法打开源文件 unistd.h_明天也要加油鸭的博客-CSDN博客_"无法打开 源 文件 \"unistd.h"

VS编译C++错误 C1083 无法打开包括文件: “unistd.h”: No such file or directory_摸鱼骑士CE的博客-CSDN博客_无法打开源文件unistd.h

不用清理,直接点击生成即可

4、第四个错误:

def文件必须在VS2017的编译选项“模块定义文件”中输入,否则exports为空

并且有可能不生成lib文件

5、取消MBTRN功能

//#define MBTRN_ENABLED 1

根据makefile.am中的.h和.c文件

去掉

mbsys_templatesystem.h

mbr_tempform.c

mbsys_templatesystem.c

6、严重性    代码    说明    项目    文件    行    禁止显示状态
错误    LNK2019    无法解析的外部符号 GMT_runtime_bindir_win32,该符号在函数 mb_proj_init 中被引用    mbio    D:\OceanMultiBeamProc\OceanMultiBeamProc\mbio\mb_proj.obj    1    

#ifdef USE_PROJ4_API
#define ACCEPT_USE_OF_DEPRECATED_PROJ_API_H

PROJ4过时库造成的,要求Proj 6+

使用PROJ6.0.0,需要sqlite3,下载sqlite3.dll生成lib

lib /def:sqlite3.def /machine:x64 /out:sqlite3.lib

生成PROJ6 的VS2017项目需要sqlite3.exe,所以下载sqlite3的src,用VS2017编译成sqlite3.exe

编译PROJ6,设置为shared,会生成proj6.0.dll,pro6.0.lib

严重性    代码    说明    项目    文件    行    禁止显示状态
错误    LNK2019    无法解析的外部符号 proj_normalize_for_visualization,该符号在函数 mb_proj6_init 中被引用    mbio    D:\OceanMultiBeamProc\OceanMultiBeamProc\mbio\mb_proj.obj    1    

不认识proj_normalize_for_visualization,版本有点低

用PROJ6.3.0的proj.h文件里由这个函数proj_normalize_for_visualization

至此可以生成了:

mb_bsio.dll

mb_gsf.dll

mb_sapi.dll

mb_mbio.dll


http://www.ppmy.cn/news/21708.html

相关文章

公务机包机|公务飞行包机攻略解答

公务机是一种在行政事务和商业活动中用作交通工具的飞行&#xff0c;也被称为行政机或商用飞机。公务机包机程序简单&#xff0c;不仅可以享受不一致的尊崇服务&#xff0c;而且可以避免巨额投资和日常管理的繁琐事务。    公务机是指在行政事务和商业活动中用作交通工具的飞…

第29章 分布式缓存强制删除触发器定义实现之IEventPublisher

1 Core.Events.IEventPublisher namespace Core.Events { /// <summary> /// 【事件触发--接口】 /// <remarks> /// 摘要&#xff1a; /// 通过继承于该接口的具体实现类中的方法成员用于实例化缓存的强制移除句柄的实例&#xff0c;触发执行缓存的强制移除句…

第1章 MongoDB 教程

第1章 MongoDB 教程 MongoDB 是一个基于分布式文件存储的database。由 C 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。 MongoDB 是一个介于关系database和非关系database之间的产品&#xff0c;是非关系database当中功能最丰富&#xff0c;最像关系databa…

Biome-BGC生态系统模型与Python融合技术实践应用

查看原文>>> Biome-BGC生态系统模型与Python融合技术实践应用 Biome-BGC是利用站点描述数据、气象数据和植被生理生态参数&#xff0c;模拟日尺度碳、水和氮通量的有效模型&#xff0c;其研究的空间尺度可以从点尺度扩展到陆地生态系统。 在Biome-BGC模型中&#xf…

cobaltstrike的shellcode免杀

基础概念 shellcode是一段用于利用软件漏洞而执行的代码&#xff0c;也可以认为是一段填充数据&#xff0c;shellcode为16进制的机器码&#xff0c;因为经常让攻击者获得shell而得名。shellcode常常使用机器语言编写。 可在暂存器eip溢出后&#xff0c;塞入一段可让CPU执行的s…

ADB 开启 USB调试后,无法自动弹出调试授权窗口的解决方法

之前介绍了 Android Device Unauthorized 的解决方案&#xff0c;这次将分享 开启 USB调试后&#xff0c;无法自动弹出调试授权窗口的解决方法。即使选择在 “仅充电” 的情况下去调试&#xff0c;结果都一样。 在我自己的工程机 (荣耀系列的) 连上电脑后&#xff0c;USB 连接方…

myBaits Target Capture Kits;myBaits 靶向捕获试剂盒,快速捕获富集目标序列

myBaits Target Capture Kits可以快速捕获富集目标序列&#xff0c;提高NGS研究效率&#xff0c;兼容Illumina&#xff0c;PacBio 和 Nanopore等多种测序平台。Arbor Biosciences使用oligo合成专利技术&#xff0c;为您提供高质量、高性价比的捕获试剂盒。适用于各种基因组类型…

湫湫系列故事——减肥记Ⅰ(Python)

Python——动态规划——湫湫系列故事——减肥记Ⅰ 湫湫系列故事——减肥记Ⅰ 问题引入 【问题描述】 对于吃货来说,过年最幸福的事就是吃了,没有之一!但是对于女生来说,卡路里(热量)是天敌啊!资深美女湫湫深谙“胖来如山倒,胖去如抽丝”的道理,所以她希望你能帮忙制…