不使用 Microsoft 编译器开发 Windows 驱动程序

发布于 2024-11-15 11:25:53 字数 519 浏览 2 评论 0原文

我的团队有一个 C 语言代码库,可用于不同平台的多个嵌入式系统。我们有一群人正在尝试将此代码库的一部分移植到 Windows 驱动程序中。然而,Microsoft 编译器的某些方面与我们现有的代码库(C99 功能等)不相符。我们尝试在产品之间保持通用的代码库,并避免为某些平台创建分支,但特定于 Windows 的解决方法和 #ifdefs 的数量变得越来越混乱。

有没有办法使用 Microsoft 以外的编译器构建 Windows 驱动程序?我们的代码库在 gcc 和 GreenHills 下编译得很好,我们也应该能够在上面使用 Intel C 编译器(我们已经尝试了一段时间了,但它应该仍然可以工作)。能够使用不同的编译器将有助于保持我们的代码更干净,而且还可以节省我们的时间和精力。我们能够找到的所有文档都涉及使用 Visual Studio 或 Windows DDK。

如果确实需要 Microsoft 编译器或 DDK,是否可以使用另一个编译器将大部分代码构建为静态库,然后使用 Windows DDK 围绕该库创建包装器?

My team has a C-language codebase that is used in several embedded systems of varying platforms. We have a group of people that are trying to port part of this codebase into a Windows driver. However, certain aspects of Microsoft's compiler don't jive with our existing code base (C99 features, among other things). We try to keep a common codebase between products and avoid creating forks for certain platforms, but the number of Windows-specific workarounds and #ifdefs is getting messy.

Is there a way to build a Windows driver using a compiler other than Microsoft's? Our codebase compiles fine under gcc and GreenHills, and we should be able to use the Intel C compiler on it as well (it's been a while since we've tried, but it should still work). Being able to use a different compiler would help keep our code cleaner, plus it would save us time and effort. All of the documentation that we have been able to locate refers to using either Visual Studio or the Windows DDK.

If the Microsoft compiler or DDK is indeed required, would it be possible to build the bulk of our code as a static library using another compiler and then use the Windows DDK to create a wrapper around that library?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

策马西风 2024-11-22 11:25:53

即使你编译成功我也不会推荐这样的事情。你永远无法知道副作用。唯一使用的编译器是 WDK 中的编译器(它已合并到 VS2012 中)。即使是 MS 非 WDK 编译器(VS2012 之前的任何 VS 版本)也不适合这里。

同样的答案也适用于使用其他编译器构建库并将其与 MS One 链接。这不是“如何欺骗操作系统”的问题,而是“如何做正确的事情”的问题。我想您可以使用其他编译器编译有限部分的代码(例如,在 MS 不支持的 C99 中编译代码),但这是有风险的。

I wouldn't recommend such thing even if you succeed to compile. You can never know the side effects. The only compiler to be used is the one in WDK (it's incorporated into VS2012). Even the MS non-WDK compiler (any VS version prior to VS2012) not suitable here.

The same answer goes for building library with other compiler and linking it with MS one. It's not a question of "how to fool the OS" but rather "how to do the right thing". I suppose you can have a limited portion of code compiled with other compiler (e.g. compile code in C99 that is not supported by MS) but it's risky.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文