【发布时间】:2015-01-09 20:23:34
【问题描述】:
我正在使用 codeBlocks 开发应该在 Linux 和 Windows 下可移植的 C 代码。 我应该包括 NetCDF C 库和 HDF5 库。
显然,Linux 中的库有时是 .so 和 .a。在 Windows 中,无论是 .lib 还是 .dll。 它们之间有什么区别,我应该使用哪一个?我在 linux 下使用 .so 并且它可以工作,但我想知道为什么它应该工作。
第二个问题是我包含文件 netcdf.h 和 hdf5.h linux 中的路径不一样 .../lib/netcdf.h 和 ..\lib\netcdf.h 虽然我知道每次在 windows 和 linux 之间切换时我都可以更改链接,但我确信应该有一种方法可以避免源代码中没有文件重复的情况。
谁能告诉我如何处理这个问题?
提前致谢。
【问题讨论】:
-
这个问题是两个(大部分不相关的)问题。这不好。
-
还有 libraries 是链接的,而不是 "include"d.
-
问题是我应该在同一个项目中添加指向库 netcdf.a 或 .so 或 .bib 或 .ddl 的链接以及指向包含文件 .h 的链接。这就是为什么我在同一个问题中问所有人:)。感谢您的理解:)。
-
最简单的方法是使用make文件。 make 文件将包含一个 #ifdef (用于识别 windows)...windows 版本的编译/链接语句 #endif 后跟 #ifdef(用于识别 linux)... linux 版本的编译/链接语句
标签: c shared-libraries static-libraries codeblocks libraries