Я получил эту функцию, она возвращает -1 и что-то печатает,
C ++
extern "C" int CsWrapper_UCPlayer_UnsetSurface(int id)
{
int result = -1;
printLog("UCPlayer CsWrapper_UCPlayer_UnsetSurface called.");
if (UCPlayer_UnsetSurface)
{
// TODO: Unset Surfice
}
return result;
}
Я скомпилирую ее для armeabi-v7a и получу файл libCsWrapper.so
Затем я go в VisualStudio 2019, делаю проект Xamarin, делаю папку libs, в ней я делаю папку armeabi-v7a, и там я помещаю файл libCsWrapper.so
в MainActivity .cs
В функции OnCreate я сделал кнопку для вызова функции testCsWrapper:
FindViewById<Button>(Resource.Id.button1).Click += (e, o) => TestCsWrapper();
И получил следующее:
#if Android
const string DllName = "libCsWrapper.so";
#else
const string DllName = "__Internal";
#endif
[DllImport(DllName, CharSet = CharSet.Unicode, ExactSpelling = true, EntryPoint = "CsWrapper_UCPlayer_UnsetSurface")]
static extern int CsWrapper_UCPlayer_UnsetSurface(int id);
private void TestCsWrapper() {
try
{
int b = CsWrapper_UCPlayer_UnsetSurface(4); // System.EntryPointNotFoundException: 'CsWrapper_UCPlayer_UnsetSurface assembly:<unknown assembly> type:<unknown type> member:(null)'
Log.Info("STF", "Wrapper should return -1, Wrapper returned: " + b);
}
catch (Exception e) {
Log.Error("STF", "Type: " + e.GetType().ToString() + " Message:" + e.Message.ToString());
}
}
И он выдает эту ошибку, когда я запускаю его на моем устройстве adb:
Type: System.EntryPointNotFoundException Message:CsWrapper_UCPlayer_UnsetSurface assembly:<unknown assembly> type:<unknown type> member:(null)
Как это может быть, если я получил extern "C" в аннотациях функций?
Редактировать 1 : Я следил за этим сайтом: https://docs.microsoft.com/en-us/xamarin/cross-platform/cpp/#creating -the-internal-wrapper-class
Надеюсь, вы в любом случае поможете мне, спасибо за ваше время.