DllNotFoundException при использовании единого родного плагина c ++ - PullRequest
1 голос
/ 20 февраля 2020

Получение DllNotFoundException при попытке создать собственный плагин c ++ для Unity.

FirstDll. cpp

#include "FirstDll.h"                                                                                                                                                                

  DLLExport int add(int a, int b){
      return a+b;
  }

  FirstDll::FirstDll(){
  }

   FirstDll::~FirstDll(){
 }

FirstDll.h

#define DLLExport __declspec(dllexport)                                                                                                                                              

   extern "C"{
       DLLExport int add(int a, int b);
   }

  class FirstDll{
  public:
       FirstDll();
      ~FirstDll();
 };

Я затем создаю файл so с помощью этой команды

g++ -dynamiclib -flat_namespace -fms-extensions FirstDll.cpp -o libmyclass.so

Затем я добавляю этот файл .so в папку Assets / Plugins / x86_64 и в своем коде Unity c# я пытаюсь запустить этот фрагмент кода .

[DllImport("myclass")]
    static extern int add(int a, int b);

После получения этой ошибки я попытался переместить файл so в другие места и выполнить тестирование. Я всегда получаю DllNotFoundException.

1 Ответ

1 голос
/ 20 февраля 2020

Попробуйте вместо этого использовать следующую команду clang

clang *.cpp -O3 -dynamiclib -arch i386 -arch x86_64 -o libmyclass.bundle

Затем убедитесь, что в Unity выбрана правильная платформа platform selection

Или вы можете проверить это просто плагин от Unity: SimplestPluginExample

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...