在 Windows 上用 C# 加载 linux 动态库 (.so)

Posted

技术标签:

【中文标题】在 Windows 上用 C# 加载 linux 动态库 (.so)【英文标题】:Loading a linux dynamic library (.so) in C# on Windows 【发布时间】:2011-11-21 08:38:15 【问题描述】:

我正在使用 swig 为我的代码生成 C# 包装器。但是我还需要链接动态库,这是一个 Linux .so 文件。是否可以从 C# 执行此操作?

谢谢

编辑:在 Windows 上使用 .so 文件。

【问题讨论】:

在 Win 上链接 .so 确实很奇怪。为什么不能使用 .dll? 【参考方案1】:

没有直接的方法可以做到这一点。您需要为所有本机代码(so 本身以及所有依赖项)创建本机 Windows 版本。

如果可能,其他选项包括在 Linux 上编写所有代码,包括 C# 部分(使用 Mono)。或者创建某种客户端/服务器设置,您的本机代码保留在 Linux 上(作为服务器应用程序),而您的 C# 代码在 Windows 客户端上运行。如果没有进一步的细节,很难判断这是否对您来说是一个可行的解决方案。

【讨论】:

【参考方案2】:

这个Post 似乎对 Linux 有一些答案,您是否尝试在 Windows 中执行此操作?

【讨论】:

【参考方案3】:

您的共享库很可能已经编译为使用 linux 命令调用。

在“windows”应用程序中使用 linux .so 文件的唯一可能方法是使用 cygwin 编译它(您的应用程序),但这样会使您的 windows 应用程序成为 posix 应用程序,这意味着它必须触发 cygwin每次运行都会启动。

【讨论】:

以上是关于在 Windows 上用 C# 加载 linux 动态库 (.so)的主要内容,如果未能解决你的问题,请参考以下文章

在 linux 上用 Eclipse 交叉编译,在 windows 上用 eclipse 交叉编译?

C# Windows 窗体(非 SQL):在新窗体上用整数 +1 填充 DataGridView 行中当前最高数字的文本框

在 Solaris、Linux、Windows 和 Mac 上用 C 语言清除屏幕

在windows上用CodeBlocks+MinGW+WxWidgets开发的程序,是不是可以在Linux和Mac上编译

windows 上用xshell使用 ssh自动登录linux

如何在 Windows 机器上用 django 测试 celery