上一篇编译的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文件。