在 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上编译