VS2017编译mb_gmt/mbaux

Posted xiaokcehui

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VS2017编译mb_gmt/mbaux相关的知识,希望对你有一定的参考价值。

先上个美女,缓解一下紧张无助的情绪。

上一篇编译的4个库文件,与大名鼎鼎的GMT没有关系。

本文编译的mb_gmt和mbaux就用到GMT。本来想尝试一下编译GMT6.4.0,感觉比较头大,好在GMT提供VS2015预编译的库文件,VS2017调用也没有问题。

mbaux生成没有问题

mb_gmt生成报了一个错误:

严重性    代码    说明    项目    文件    行    禁止显示状态
错误    LNK2005    GMT_mbgrdtiff 已经在 mbgrdtiff.obj 中定义    gmt    D:\\OceanMultiBeamProc\\OceanMultiBeamProc\\gmt\\mbgrdtifforg.obj    1    

mbgrdtiff.c

mbgrdtifforg.c

只能用一个,选择条件在makefile.am,如下:

#if GMT61PLUS
#  mbsystem_la_SOURCES += mbgrdtiff.c
#else
  mbsystem_la_SOURCES += mbgrdtifforg.c
#endif

由于GMT的版本为6.4.0,因此,去掉mbgrdtifforg.c

mb_gmt没有采用def生成dll和lib

使用的是加声明:

EXTERN_MSC int GMT_mbgrdtiff(void *API, int mode, void *args);

EXTERN_MSC

define EXTERN_MSC extern LIBSPEC

#    ifdef _WIN32
#        ifdef LIBRARY_EXPORTS
#            define LIBSPEC __declspec(dllexport)
#        else
#            define LIBSPEC __declspec(dllimport)
#        endif /* ifdef LIBRARY_EXPORTS */
#    else /* ifdef _WIN32 */
#        define LIBSPEC
#    endif /* ifdef _WIN32 */

D:\\OceanMultiBeamProc\\bin>dumpbin /exports mb_gmt.lib
Microsoft (R) COFF/PE Dumper Version 14.10.25017.0
Copyright (C) Microsoft Corporation.  All rights reserved.


Dump of file mb_gmt.lib

File Type: LIBRARY

     Exports

       ordinal    name

                  GMT_mbcontour
                  GMT_mbgrdtiff
                  GMT_mbswath
                  _null_auth
                  rpc_createerr
                  svc_fdset

  Summary

          C0 .debug$S
          14 .idata$2
          14 .idata$3
           8 .idata$4
           8 .idata$5
           C .idata$6

就三个函数,可以自己定义def文件。

以上是关于VS2017编译mb_gmt/mbaux的主要内容,如果未能解决你的问题,请参考以下文章

无法在 VS2017 上转换 T4 模板

windows 平台使用 VS2017 编译 libevent 源码

[C++][修改]GDAL源码编译vs2015/vs2017/vs2019

VS2017编译SFML SDK配制环境详解

vs2017调用libtorch 报一堆错误

我在VS2017里面用C#在.net framework上编写了一个dll,我想编译,怎么解决?