首页 > 解决方案 > grpc 和英特尔编译器

问题描述

我想使用 gRPC 作为 C++ 和 Java 组件之间的桥梁/粘合剂(在 Windows 和 Linux 上,尽管目前我对 Windows 解决方案更感兴趣)但我目前面临的主要障碍是缺乏对英特尔的支持一些组件使用的编译器(我猜主要是由于第三方依赖,例如不支持它的abseil)。通常我会经历所有错误并尝试自己修复它们,但由于我不是 C++ 专家,可能最终不会很好,也许还有另一种方法可以绕过这个问题。

我所说的“绕过”是严格来说我不必用 ICC 编译新组件,只要有另一种方法可以将我的新库/代码插入现有的 C++ 项目(使用 ICC 编译)。我知道我在这里过于简单化了(而使用 C++ 从来都不是那么容易),但最后应该只是将另一个 DLL 添加到应用程序依赖项中。我读了一些关于混合不同 C++ 编译器的相当老的线程,虽然不推荐它似乎可行,但关于如何做到这一点的建议似乎有点过头了,所以我想知道是否有更简单的方法来(只是)链接和使用我的库/二进制而不回退到 COM(也许近年来事情发生了变化,有更好的方法吗?)。

有没有人设法做这样的事情(另外有没有人设法用 ICC 编译 gRPC - 没有指定任何版本,因为这似乎是一个很长一段时间的问题)?

提前致谢

标签: c++grpcicc

解决方案


Windows 上的 Dll 在涉及到其暴露的 API 时需要特别小心。一些库不想打扰,也不正式支持构建为 dll。

我从以前的经验中知道 grpc 不支持构建为 dll。你可以在这里阅读。应该可以编译,但是它很有可能会触发可怕的 dll 堆相关的错误。这绝对不是生产代码的方式

一种可能的解决方案是将 grpc 静态链接到您自己的dll 中。制作一个隐藏任何 grpc API 的包装器,使用 MSVC 将其全部编译,然后将其用作 ICC 项目中的 dll 依赖项。


推荐阅读