c++ - 使用统一 native C++ 插件时出现 DllNotFoundException

标签 c++ macos unity3d

尝试为 Unity 构建 native c++ 插件时出现 DllNotFoundException。

第一个DLL.cpp

#include "FirstDll.h"                                                                                                                                                                

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

  FirstDll::FirstDll(){
  }

   FirstDll::~FirstDll(){
 }

第一DLL.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

然后我在 Assets/Plugins/x86_64 文件夹和我的统一 c# 代码中添加了这个 .so 文件,我正在尝试运行这段代码。
[DllImport("myclass")]
    static extern int add(int a, int b);

收到此错误后,我尝试将 so 文件移动到不同的位置并进行测试。我总是收到 DllNotFoundException。

最佳答案

尝试改用以下 clang 命令

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

然后确保在 Unity 中选择正确的平台
platform selection

或者你可以从 Unity 中查看这个简单的插件:SimplestPluginExample

关于c++ - 使用统一 native C++ 插件时出现 DllNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60318607/

相关文章:

c++ - 将 array.size() 与负值进行比较时出现 if 条件的意外行为

ruby-on-rails - 如何在 Mac OS X 上卸载 Ruby on Rails?

macos - 将两个 SSH key 与 GitHub 以及连接多路复用一起使用

javascript - 防止在 OSX 的 Safari 中捏合/缩放

c# - OnMouseEnter 旋转变换

c# - IEnumenator 出问题了

c++ - 内存配对游戏如何随机化数组中的字符

c++ - 适用于C++的wso2 Web服务框架中的JSON支持

c++ - 在 Boost.Geometry 中将两个多边形合并为一个多边形 : Exterior points only, 无孔

c# - 在没有 "Time.timeScale = 0"的情况下暂停 Unity 游戏