Вызов .so библиотеки в C#
Написал небольшую C++ библиотеку с экспортируемым методом. Собираю ее в Dll и метод вызывается без проблем, но мне нужно, чтобы программа работала на Linux, поэтому я собираю библиотеку в Shared Object с помощью msys2 mingw64, но как бы я не пытался, при вызове метода я получаю исключение:
Unable to load shared library 'test.so' or one of its dependencies. In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable: libtest.so: cannot open shared object file: No such file or directory
Разумеется, я запускаю программу в WSL и указываю активную директорию к папке с библиотекой
[DllImport("test.so", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public static extern IntPtr VerifyCert();
Ответы (1 шт):
Может, всё-таки следует скомпилировать компилятором gcc? Пробовали создать программу с помощью msys2 mingw64 и запустить её в Linux? И не забудьте указать в экспортируемых функциях extern "С":
extern "С" char* VerifyCert()
{
....
}
И компиляция с флагом -shared