C# 使用c DLL时出错。试图读取或写入受保护的内存

C# 使用c DLL时出错。试图读取或写入受保护的内存,c#,C#,我尝试在c#中使用在c中创建的dll,但出现错误“试图读取或写入受保护的内存。这通常表示其他内存已损坏。” 我在这里看到了很多话题,但我没有解决问题。有可能帮助我吗 我的C#代码是: 我要在c中导出的代码是 __declspec(dllexport) SRes LoadRes( const char *filename, bool header_only ); 谢谢你的帮助 你确定你没有在DLL中做坏事吗?没有分配内存,指针问题,等等?我有一个旧的dll,我有同样的问题。旧dll在c中工作

我尝试在c#中使用在c中创建的dll,但出现错误“试图读取或写入受保护的内存。这通常表示其他内存已损坏。”

我在这里看到了很多话题,但我没有解决问题。有可能帮助我吗

我的C#代码是:


我要在c中导出的代码是

__declspec(dllexport) SRes  LoadRes( const char *filename, bool header_only );

谢谢你的帮助

你确定你没有在DLL中做坏事吗?没有分配内存,指针问题,等等?我有一个旧的dll,我有同样的问题。旧dll在c中工作。请尝试为您的应用程序/库或您正在构建的任何内容提供管理权限。什么是SRes?你也可以为它添加声明吗?请注意,你不需要LoadLibrary和GetProcAddress,使用pinvoke会自动完成这项工作,你只需要声明LoadRes。。。
SRes sres = new SRes();
string path="C:\\123456.fil";
System.IntPtr load = LoadLibrary("lib.dll");
System.IntPtr adress = GetProcAddress(load, "LoadRes");            
sres = LoadRes(path, true);
__declspec(dllexport) SRes  LoadRes( const char *filename, bool header_only );