У меня есть две библиотеки DLL, которые я создал, и они находятся в Assets/Plugins. Кажется, что все работает нормально, другое дает мне исключение EntryPointNotFoundException, хотя код выглядит точно так же для меня. Может быть, есть некоторые настройки, которые я пропустил в VisualStudio? Какие настройки мне нужны?EntryPointNotFoundException в одной DLL пока кажется прекрасным в другом
Тот, который работает выглядит следующим образом:
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++ Header
#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++ Header
#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;
}
Это действительно хороший инструмент, спасибо. Когда я выполняю проверку того, кто работает, все функции отображаются без изменений. Когда я делаю чек на том, который не работает, никаких функций не появляется вообще. – mBajema
@mBajema хороший знак, пожалуйста, проверьте, что вы скомпилировали обе библиотеки dll для образца платформы - x86 или x64 – Nikita
У меня есть оба они установлены как платформа конфигурации конфигурации x64 в диспетчере конфигурации. – mBajema