Вам необходимо скомпилировать библиотеку как разделяемую библиотеку: статическая библиотека не может быть загружена во время выполнения с помощью P / Invoke.Тот факт, что вы добавили функцию main (), предполагает, что вы вместо этого компилируете код в исполняемый файл.Поэтому первое, что вы должны узнать, как скомпилировать разделяемую библиотеку, вы можете попробовать что-то вроде:
gcc -shared -o libtestcpp.so testcpp.cpp
Затем измените имя DllImport на путь к полному имени библиотеки:
DllImport("/home/yourlogin/MonoCsTest/bin/Debug/libtestcpp.so")
Другая ошибка, которую вы допустили, не учитывает искажение имен с помощью C ++: здесь более простое решение - экспортировать Sum () как функцию C, окружив ее extern "C" {}
.
Для диагностики таких ошибок.часто полезно включить ведение журнала отладки из моно, используя:
MONO_LOG_LEVEL="debug" MONO_LOG_MASK="dll" mono yourprog.exe