我可以为 linux 动态 link 一个二进制构建来与 .Net 和 Mono 一起工作吗
Can I dynamically link a binary build for linux to work with .Net and Mono
我正在尝试为 Raspberry pi 构建一个使用 SPI 的 .Net 应用程序。 Windows 10 IoT 的 SPI 驱动程序速度很慢。因此我要使用 Mono 将项目迁移到 Linux(因为我的代码已经用 .Net 编写)
因为我在 Windows IoT 上遇到 SPI 速度问题,所以我正在考虑用 C++ 编写 SPI 代码,然后 link 将它们动态地写入 .Net 应用程序。但是我很难在网上找到有关如何执行此操作的信息。这里有人知道吗?
总结一下这个问题。我想 运行 我的 .Net 应用程序在 Linux 上使用单声道和动态 link 我将用 c++ 编写的库。
感谢任何帮助!
是的,你可以。只需确保您的 C++ 编译的 .so 可以在系统上找到(也许通过确保 LD_LIBRARY_PATH env 变量可以找到它)。然后在您的 C# 代码中:
[DllImport("LibraryName")]
private static extern void Foo();
// Call Foo() from C#
在您的 C++ 代码中:
extern "C" void Foo()
{
// do C++ stuff
}
在运行时,当您从 C# 调用 Foo() 时,mono 将加载 .so 并找到该函数并调用它。
所有血淋淋的细节都在这里:http://www.mono-project.com/docs/advanced/pinvoke/
我正在尝试为 Raspberry pi 构建一个使用 SPI 的 .Net 应用程序。 Windows 10 IoT 的 SPI 驱动程序速度很慢。因此我要使用 Mono 将项目迁移到 Linux(因为我的代码已经用 .Net 编写)
因为我在 Windows IoT 上遇到 SPI 速度问题,所以我正在考虑用 C++ 编写 SPI 代码,然后 link 将它们动态地写入 .Net 应用程序。但是我很难在网上找到有关如何执行此操作的信息。这里有人知道吗?
总结一下这个问题。我想 运行 我的 .Net 应用程序在 Linux 上使用单声道和动态 link 我将用 c++ 编写的库。
感谢任何帮助!
是的,你可以。只需确保您的 C++ 编译的 .so 可以在系统上找到(也许通过确保 LD_LIBRARY_PATH env 变量可以找到它)。然后在您的 C# 代码中:
[DllImport("LibraryName")]
private static extern void Foo();
// Call Foo() from C#
在您的 C++ 代码中:
extern "C" void Foo()
{
// do C++ stuff
}
在运行时,当您从 C# 调用 Foo() 时,mono 将加载 .so 并找到该函数并调用它。
所有血淋淋的细节都在这里:http://www.mono-project.com/docs/advanced/pinvoke/