gpt4 book ai didi

c# - 与 Linux 中的 native 库互操作

转载 作者:太空狗 更新时间:2023-10-29 20:31:19 27 4
gpt4 key购买 nike

我正在用跨平台的 C# 编写应用程序。它为几个不同的库使用 DllImport。它也是 x32 和 x64。它似乎适用于我自己编译的 .dll/.so。我将 x32 共享库放在 x32 子文件夹中,将 x64 共享库放在 x64 子文件夹中。

在 Windows 上,我通过 .net 框架调用 SetDllDirectory("x32"or "x64") 取决于当前运行。在单声道上,通过 Windows、Linux 或 Mac,我在 RandomLibrary.dll.config 中使用 DllMap。它适用于位于 x32 或 x64 目录中的文件。

但是,我也将 DllImport 用于不是我编写的库,例如 FreeType2。在 Windows 上,我只是将构建的库放入两个子文件夹中。但是在 Linux 上,我宁愿使用 libfreetype6 库,您可以通过友好的本地包管理器安装它。我可以将 DllMap 链接硬编码到 /usr/lib/x86_64-linux-gnu/libfreetype.so.6,但我假设 freetype 文件会根据您使用的发行版而改变。

有没有什么简单的方法可以找到 libfreetype.so 而不管我使用的是什么发行版?

最佳答案

在 Linux 上使用 DllImport("libfreetype.so.6") 应该就足够了,因为系统应该配置为正确处理它。确保安装了正确的软件包。如果它不起作用,你可能有一个配置错误的系统:发布你得到的错误,LD_LIBRARY_PATH 环境变量值,/etc/ld.so.conf 的内容和/etc/ld.so.conf.d 中的文件/.的输出

/sbin/ldconfig -p |grep freetype

也会很有用。

关于c# - 与 Linux 中的 native 库互操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11895630/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com