在 Windows 上用 C# 加载 Linux 动态库 (.so)
我正在使用 swig 为我的代码生成 C# 包装器。但随后我还需要链接动态库,这是一个 Linux .so 文件。可以从 C# 做到这一点吗?
谢谢
编辑:在 Windows 上使用 .so 文件。
I am using swig to generate a C# wrapper to my code. But then I also need to link the dynamic library, which is a Linux .so file. Is it possible to do this from C#?
Thanks
Edit: using a .so file on Windows.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
没有直接的方法可以做到这一点。您需要创建所有本机代码(so 本身以及所有依赖项)的本机 Windows 版本。
其他选项包括在 Linux 上编写所有代码(如果可能的话),包括 C# 部分(使用 Mono)。或者创建某种客户端/服务器设置,其中您的本机代码保留在 Linux 上(作为服务器应用程序),而 C# 代码则保留在 Windows 客户端上。如果没有更多细节,很难判断这对您来说是否是一个可行的解决方案。
There is no direct way to do this. You need to create a native Windows version of all your native code (the so itself, plus all dependencies).
Other options include writing all your code on Linux, if possible, including the C# portion (using Mono). Or creating some sort of client/server setup, where your native code remains on Linux (as a server application) and your C# code goes on the Windows-client. If that is a viable solution for you is hard to tell without further details.
这篇帖子似乎有一些答案Linux,你想在 Windows 中这样做吗?
This Post seems to have some answers for Linux, are you trying to do this in Windows?
您的共享库很可能已被编译为使用 Linux 命令调用。
在“windows”应用程序中使用 linux .so 文件的唯一可能方法是使用 cygwin 编译它(您的应用程序),但这种方式将使您的 Windows 应用程序成为 posix 应用程序,这意味着每次它都必须启动 cygwin运行。
It's more than likely that your shared library will have been compiled to use linux command calls.
The only possible way to use linux .so files in a "windows" app would be to compile it (your app) using cygwin, but that way would make your windows app a posix app which means it would have to fire cygwin up everytime it runs.