【发布时间】:2011-06-14 23:44:11
【问题描述】:
我的团队有一个 C 语言代码库,用于不同平台的多个嵌入式系统。我们有一群人试图将此代码库的一部分移植到 Windows 驱动程序中。但是,Microsoft 编译器的某些方面与我们现有的代码库(C99 功能等)不相符。我们试图在产品之间保持一个通用的代码库,并避免为某些平台创建分支,但是 Windows 特定的解决方法和#ifdefs 的数量变得越来越混乱。
有没有办法使用 Microsoft 以外的编译器构建 Windows 驱动程序?我们的代码库在 gcc 和 GreenHills 下编译得很好,我们也应该能够在上面使用 Intel C 编译器(我们已经尝试了一段时间,但它应该仍然可以工作)。能够使用不同的编译器将有助于保持我们的代码更干净,而且它会节省我们的时间和精力。我们能够找到的所有文档均涉及使用 Visual Studio 或 Windows DDK。
如果确实需要 Microsoft 编译器或 DDK,是否可以使用另一个编译器将我们的大部分代码构建为静态库,然后使用 Windows DDK 围绕该库创建一个包装器?
【问题讨论】:
-
你现在用的是什么版本的编译器?
-
我们正在使用与当前 Windows DDK 一起打包的任何内容。构建实际上是在自动构建服务器上完成的,所以我面前没有它的副本来获取确切的版本号。
-
从构建窗口:只需键入不带任何命令行参数的 cl.exe。版本 16.x 是对应于 Visual Studio 2010 的最新版本。如果 DDK/WDK 是旧版本,您可能会安装 Visual C++ express,然后修复您的 DDK 构建环境以使用该编译器。
-
但问题是,我们可以使用非微软的编译器(包括Visual Studio以及DDK自带的编译器)吗?
-
我的意思是,较新的编译器可能具有您想要的 C99 支持。然而,与 DDK 一起提供的版本很可能是与该版本的操作系统一起提供的版本。 C99 支持在每个版本中逐步添加。如果无法升级,请尝试使用 Intel 编译器。它要么起作用,要么不起作用。我听说英特尔编译器的命令行参数是相似的,因此它是一个替代品。