gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 05:32:59 32 4
gpt4 key购买 nike

我创建了两个 DLL,它们位于 Assets /插件中。一个似乎工作正常,另一个给了我一个 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++ 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++ 头文件

#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 中。

关于c# - 在一个 DLL 中出现 EntryPointNotFoundException 而在另一个 DLL 中似乎正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39005340/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com