从另一个dll调用函数时,DLL变得无法加载

时间:2018-12-18 13:00:27

标签: c# c++ unity3d

现在我有一个Unity(C#)项目,该项目从dll调用我的C ++项目。它们都工作正常,因此可以从Unity调用C ++函数。

但是,当我尝试添加一行来在C ++项目中调用函数另一个库(NLOpt库,来自另一个dll)时,生成的dll无法加载到Unity项目中。

插件.h

extern "C" __declspec(dllexport) bool __stdcall LoadData(int agent_num, int frame_num, float* data);

Plugin.cpp

#include "Plugin.h"
#include <nlopt.h>
__declspec(dllexport) bool __stdcall LoadData(int agent_num, int frame_num, float* d)
{
    ...
    nlopt_opt opt = nlopt_create(NLOPT_LN_COBYLA, 3); //this line
}

当我在上面添加行时,Unity将出现以下错误:

Plugins: Failed to load 'Assets/Plugins/BirdOpti/BirdOpti.dll'

DllNotFoundException: Opti

我已经尝试了几次,所以我确定问题出在电话线上。

我做错了什么吗?

1 个答案:

答案 0 :(得分:0)

还将使用过的dll文件添加到插件目录即可解决此问题。