【发布时间】:2021-12-01 08:24:40
【问题描述】:
我收到以下错误:
在 My Test App.exe 中的 0x71D1336E (vcruntime140.dll) 处引发异常: 0xC0000005:访问冲突读取位置0x00974000。
从 C# .NET Framework 控制台(这是一个 C++ DLL 非托管项目)调用以下方法时:
extern "C" {
__declspec(dllexport) int SetIpAddress() {
return 0x8;
}
}
这是我的控制台代码:
class Program
{
[DllImport("C:\\Users\\Dash\\Release\\Test.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int SetIpAddress();
static void Main(string[] args)
{
int result = SetIpAddress();
Console.WriteLine($"SetIpAddress result: {result}");
}
}
从与“访问冲突读取位置”相关的所有类似 SO 问题中,它与分配内存的问题有关。但是,正如您所看到的,在任何方法中都没有分配内存。想法?
【问题讨论】:
-
名称不匹配
SetNcIpAddress与SetIpAddress。错字? -
@RichardCritten - 是的,SetIpAddress - 方法名称匹配,这只是一个错字。
-
DLL 是 32 位的,而您的 C# 是 64 位的?我相信我曾经遇到过这个。
-
这也是拼写错误
...Dash\\\\Release...吗? -
两个项目都是 64 位版本。而且,是的,目录路径也是一个错字。