使用外部c++;Unity3D 5中的dll 我写了一个C++ DLL,我想用在UnyD3D中。我将它放入资产/插件中,并编写了一个C#脚本,该脚本应该可以访问它的一个功能,但我得到了以下错误:

使用外部c++;Unity3D 5中的dll 我写了一个C++ DLL,我想用在UnyD3D中。我将它放入资产/插件中,并编写了一个C#脚本,该脚本应该可以访问它的一个功能,但我得到了以下错误:,c#,c++,dll,unity3d,C#,C++,Dll,Unity3d,EntryPointNotFoundException:乘法 test.Start()(位于Assets/Scripts/test.cs:11) 经理h: extern "C" { class Manager { public: __declspec(dllexport) float Multiply(float a, float b); }; } Manager.cpp: #include "Manager.h" extern "C" {

EntryPointNotFoundException:乘法
test.Start()(位于Assets/Scripts/test.cs:11)
经理h:

extern "C"
{
    class Manager
    {
    public:
        __declspec(dllexport) float Multiply(float a, float b);
    };
}
Manager.cpp:

 #include "Manager.h" 

extern "C"
{
    float Manager::Multiply(float a, float b)
    {
        return a * b;
    }
}
C#脚本:


编辑:这在我使用类时不起作用。要使用一个类,你必须像做一件小事一样去做,为什么你要做一个你想做的函数?而且,
乘法
函数在一个类中,并且声明为
公共
,所以这不需要
管理器
对象的对象实例吗?(也许可以尝试遵循教程中的约定,如或)你是对的,“类管理器”是问题所在。有没有一种方法可以在类中使用它?类和DLL真的很棘手。大多数人在处理DLL边界时使用“ExtEngCc”的原因是编译器在C++函数/类上执行“名称修改”,并且它与编译器到编译器以及版本在同一编译器中的版本不一致。对于一些实现选项,请检查一下:在C语言中,需要创建一个表示Manager类的结构,而C++中需要提供一个C包装器API;可用于实例化C++管理器实例并在管理器实例上调用多个函数的函数。然后在C语言中,DLLImport使用C包装器API,使用C的结构作为管理器作为C语言到C++的瞬态对象。
 [DllImport("Manager", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode)]
    private static extern float Multiply(float a, float b);

    void Start()
    {
        Debug.Log(Multiply(10, 2));
    }