VS2017编译gsf/surf/mbio | 您所在的位置:网站首页 › vs未定义的标识符 › VS2017编译gsf/surf/mbio |
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函数,但在文件中有_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 |
CopyRight 2018-2019 实验室设备网 版权所有 |