当前位置: 首页 > news >正文

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

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

相关文章:

  • 【完美解决】Github action报错remote: Write access to repository not granted.
  • vulnhub之PRIME (2021): 2
  • 【C++修炼之路】C++入门(下)
  • 【Android Studio】【Flutter】Android Studio下Flutter环境搭建记录
  • Vue3 中使用组合式API替换mixins,达到代码复用并解决隐患
  • 规则引擎-drools-3.3-drl文件构成-rule部分-条件Condition
  • 企业怎么能上百度百科词条,创建百科方法
  • 3-1多线程-线程池
  • Linux-远程管理命令
  • mysql:数据库调优策略,sql调优
  • HighCharts结构及详细配置(中文对比)
  • 面试之 Python 框架 Flask、Django、DRF
  • 2023年FOF/MOM基金研究报告
  • 在CentOS-6.9配置apache服务(1)---基于个人主页的身份验证
  • End-to-End Entity Resolution for Big Data: A Survey Matching部分学习笔记
  • 自动驾驶感知——红外传感器
  • stream操作常用API 示例详解
  • IB EE 学习干货,从选学科/课题/写稿/对稿/交稿几个方面入手分享
  • 集成学习面试常见问题
  • [C++][原创]jsoncpp用法及其注意事项
  • 电加热油锅炉工作原理_电加热导油
  • 大型电蒸汽锅炉_工业电阻炉
  • 燃气蒸汽锅炉的分类_大连生物质蒸汽锅炉
  • 天津市维修锅炉_锅炉汽化处理方法
  • 蒸汽汽锅炉厂家_延安锅炉厂家
  • 山西热水锅炉厂家_酒店热水 锅炉
  • 蒸汽锅炉生产厂家_燃油蒸汽发生器
  • 燃煤锅炉烧热水_张家口 淘汰取缔燃煤锅炉
  • 生物质锅炉_炉
  • 锅炉天然气_天燃气热风炉