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

时间:2014-02-10 19:44:31

标签: c#

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

我在这里看到很多主题,但我没有解决问题。它可以帮助我吗?

我的C#代码是:

[DllImport("kernel32", SetLastError = true, CharSet = CharSet.Unicode)]

public static extern IntPtr LoadLibrary(string dllToLoad);

[DllImport("kernel32", CharSet = CharSet.Ansi, ExactSpelling = true, SetLastError = true)]

public static extern IntPtr GetProcAddress(IntPtr hModule, string procedureName);

[DllImport("kernel32")]
public static extern bool FreeLibrary(IntPtr hModule);

[DllImport("lib.dll", EntryPoint = "LoadRes", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]

private static extern SRes LoadRes([MarshalAs(UnmanagedType.LPStr)]string str, bool type);

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);

我在c中导出的代码是

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

感谢您的帮助!!

0 个答案:

没有答案