在一个 DLL 中出现 EntryPointNotFoundException 而在另一个 DLL 中似乎正常

EntryPointNotFoundException in one DLL while seems fine in another

我创建了两个 DLL,它们驻留在 Assets/Plugins 中。一个似乎工作正常,另一个给了我一个 EntryPointNotFoundException,即使代码对我来说看起来完全一样。也许我在 VisualStudio 中遗漏了一些设置?我需要什么设置?

有效的是这样的:

C#

[DllImport("winBlinkDetect")]
     private static extern void IsSeven(ref int x);

 [DllImport("winBlinkDetect")]
     private static extern int PrintFive();

 void Start()
     {
         int test = 0;
         Debug.Log("x = " + test);
         IsFive(ref test);
         Debug.Log("x = " + test);
         Debug.Log(PrintFive());
     }

C++ 头文件

 #if _MSC_VER // this is defined when compiling with Visual Studio
 #define EXPORT_API __declspec(dllexport) // Visual Studio needs annotating exported functions with this
 #define _USE_MATH_DEFINES
 #else
 #define EXPORT_API // XCode does not need annotating exported functions, so define is empty
 #endif

 #ifdef __cplusplus
 extern "C" {
 #endif

     void EXPORT_API IsFive(int *y);
     void EXPORT_API IsSeven(int *x);
     int EXPORT_API PrintFive();


 #ifdef __cplusplus
 }
 #endif
C++ .cpp

 void IsFive(int *y)
 {
     *y = 5;
 }

 void IsSeven(int *x)
 {
     *x = 7;
 }

 int PrintFive()
 {
     return 99;
 }

对于不起作用的那个: C#

[DllImport("brain")]
     private static extern int GiveNinetyNine();

     [DllImport("brain")]
     private static extern void IsFive(ref int x);

 void Start()
     {
         int test = 0;
         Debug.Log("x = " + test);
         IsFive(ref test);
         Debug.Log("x = " + test);
         Debug.Log(GiveNinetyNine());
     }

C++ 头文件

#if _MSC_VER // this is defined when compiling with Visual Studio
 #define EXPORT_API __declspec(dllexport) // Visual Studio needs annotating exported functions with this
 #define _USE_MATH_DEFINES
 #else
 #define EXPORT_API // XCode does not need annotating exported functions, so define is empty
 #endif

 #include <string>;

 #ifdef __cplusplus
 extern "C" {
 #endif

     // test functions
     void EXPORT_API IsFive(int *y);
     void EXPORT_API IsSeven(int *x);
     int EXPORT_API GiveNinetyNine();
 #ifdef __cplusplus
 }
 #endif
C++ .cpp

 void IsFive(int *y)
 {
     *y = 5;
 }

 void IsSeven(int *x)
 {
     *x = 7;
 }

 int GiveNinetyNine()
 {
     return 99;
 }

Dependency Walker 显示没有导出函数,但头文件中的导出函数看起来不错。似乎 h 文件未包含在 cpp 文件中。要检查这个,请在​​函数定义中将 __declspec(dllexport) 放入 cpp 中。