grpc 和 Intel 编译器

grpc and Intel compiler

我想将 gRPC 用作 C++ 和 Java 组件之间的 bridge/glue(在 Windows 和 Linux 上,尽管目前我更感兴趣在 Windows 解决方案中),但我目前面临的主要障碍是缺乏对英特尔编译器的支持(我猜主要是由于第三方依赖项,例如不支持它的 abseil),它被某些组件使用.通常我会检查所有错误并尝试自己修复它们,但由于我不是 C++ 专家,结果可能不会很好,而且也许还有另一种方法可以绕过该问题。

我所说的“绕过”严格来说是指我不必使用 ICC 编译新组件,只要有另一种方法将我的新 library/code 插入现有的 C++ 项目(已编译与国际刑事法院)。我知道我在这里过于简单化了(并且使用 C++ 从来没有那么容易)但最后应该只是向应用程序依赖项添加另一个 DLL 的问题。我阅读了一些关于混合不同 C++ 编译器的相当陈旧的线程,虽然不推荐它似乎可行,但关于如何做到这一点的建议似乎有点矫枉过正,所以我想知道是否有更简单的方法(只是)链接和使用我的 library/binary 不回退到 COM(也许近年来事情发生了变化,有更好的方法吗?)。

有没有人设法做到类似的事情(并且有没有人设法用 ICC 编译 gRPC - 没有指定任何版本,因为这似乎是一个长期存在的问题)?

提前致谢

windows 上的 Dll 在暴露 API 时需要特别小心。有些库不想打扰,也不正式支持构建为 dll。

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

一个可能的解决方案是静态地link grpc 到你自己的 dll。制作一个隐藏任何 grpc API 的包装器,使用 MSVC 编译它,然后将它用作 ICC 项目中的 dll 依赖项。