Dllimport/PInvoke 二进制兼容性
Dllimport/PInvoke binary compatibility
我正在学习 PInvoke,以便在 C# 中使用 C++ 库(具有 C 风格界面)。在阅读文档并搜索 Google/Whosebug 以获取更多信息后,我想知道本机库和 .Net 的二进制兼容性。我想我刚才在某个地方读过一些东西,但我再也找不到了。我在这方面找不到任何其他内容。
当我编译要在 .Net 中使用的 C/C++ 时,我是否需要使用某些配置(如编译器标志)以使其与 PInvoke 兼容?我可以在一个 .Net 项目中使用由不同编译器创建的本机库,前提是这些库不相互依赖吗?
关于 .Net PInvoke 的 C/C++ 编译,我还有什么需要了解的吗?
我想将 GCC 和 CLang 与 CMake 项目结合使用来创建原生库。
P/Invoke有很多适配能力。另外 P/Invoke 是 cross platform(使用 .NET Core)。
但是,它与C/C++二进制不兼容,但是如果一段C/C++代码可以被P/Invoke使用,它不依赖于C/C++ 编译器(MSVC 或其他),或者换句话说,它将无法使用任何 C++ 构造,但它将所有 C++ 编译器视为平等公民
我正在学习 PInvoke,以便在 C# 中使用 C++ 库(具有 C 风格界面)。在阅读文档并搜索 Google/Whosebug 以获取更多信息后,我想知道本机库和 .Net 的二进制兼容性。我想我刚才在某个地方读过一些东西,但我再也找不到了。我在这方面找不到任何其他内容。
当我编译要在 .Net 中使用的 C/C++ 时,我是否需要使用某些配置(如编译器标志)以使其与 PInvoke 兼容?我可以在一个 .Net 项目中使用由不同编译器创建的本机库,前提是这些库不相互依赖吗?
关于 .Net PInvoke 的 C/C++ 编译,我还有什么需要了解的吗?
我想将 GCC 和 CLang 与 CMake 项目结合使用来创建原生库。
P/Invoke有很多适配能力。另外 P/Invoke 是 cross platform(使用 .NET Core)。
但是,它与C/C++二进制不兼容,但是如果一段C/C++代码可以被P/Invoke使用,它不依赖于C/C++ 编译器(MSVC 或其他),或者换句话说,它将无法使用任何 C++ 构造,但它将所有 C++ 编译器视为平等公民