将 DLLImport 与共享库一起使用时出现 DLLNotFound

DLLNotFound when using DLLImport with shared library

我正在创建一个 .NET Framework 4.0 应用程序,它在 Windows 上启动时使用 DLL,在 Linux(debian 版本 10)上启动时使用 C++ 编写的共享库。

C# 代码看起来像这样:

[DllImport("graf")]
private static extern int Method1();

在 Windows 上,一切正常,应用程序运行良好。 在 Linux,我使用 Wine 启动应用程序。问题是当我尝试使用我的库中的任何方法时,我得到了 DLLNotFoundException: graf.

我的共享库在 /lib/usr/lib 和 exe 文件夹中。我尝试重命名我的库 libgraf.so 并且只重命名 graf.dll 但它不起作用。

我遵循了这个 link 的每一步。但是我不能使用我的 .so 库。

你有解决这个问题的线索吗?

编辑:好的,这似乎是我的共享库编译中的一个问题。

我的问题来自以下事实:1) 我的库编译错误(Makefile 问题);和 2) 我必须在我的函数定义中使用关键字 extern "C" {

有关详细信息,请参阅 What is the effect of extern "C" in C++?