C# 尝试读取或写入受保护的内存。这通常指示其他内容以毁坏
C# 尝试读取或写入受保护的内存。这通常指示其他内容以损坏
我这里调用了一个开源库gdal_csharp.dll, v2.0.50727,在.net framework v2.0 和.net framework v4.0项目中将其引用,创建一个类用以调用代码如下:
public string GetProject(string filePath)
{
Gdal.AllRegister();
Dataset ds;
try
{
string a = "";
ds = Gdal.OpenShared(filePath, Access.GA_ReadOnly);
a = ds.GetProjection();
return a;
}
catch (Exception ex)
{
return ex.Message;
}
}
这在VS2010运行编译时没有任何错误,都可以调用出来信息。但是直接点击Debug目录下.exe文件时,报错。错误如标题。特别强调一下上面这段代码在项目.net framework2.0下,调用他的在.net framework4.0下。。。
求大神帮忙啊,搞了好久!!!!
------解决方案--------------------
不要引用那个现成的,用.net 2.0编译的dll,而是拿着源代码,自己用VS2010编译一个4.0版本的dll
------解决方案--------------------
试着重新清理下项目然后再重新生成看下,这样做的目的是确保你点击的exe文件就是你在vs下面运行的时候生成的exe文件
------解决方案--------------------
应该是文件正在使用时,你打开它,你访问方式变一下,能不能修改变共享方式读取(有没有共享方式),或判断一下文件有没有正在使用中 ds = Gdal.OpenShared(filePath, Access.GA_ReadOnly);
我这里调用了一个开源库gdal_csharp.dll, v2.0.50727,在.net framework v2.0 和.net framework v4.0项目中将其引用,创建一个类用以调用代码如下:
public string GetProject(string filePath)
{
Gdal.AllRegister();
Dataset ds;
try
{
string a = "";
ds = Gdal.OpenShared(filePath, Access.GA_ReadOnly);
a = ds.GetProjection();
return a;
}
catch (Exception ex)
{
return ex.Message;
}
}
这在VS2010运行编译时没有任何错误,都可以调用出来信息。但是直接点击Debug目录下.exe文件时,报错。错误如标题。特别强调一下上面这段代码在项目.net framework2.0下,调用他的在.net framework4.0下。。。
求大神帮忙啊,搞了好久!!!!
------解决方案--------------------
不要引用那个现成的,用.net 2.0编译的dll,而是拿着源代码,自己用VS2010编译一个4.0版本的dll
------解决方案--------------------
试着重新清理下项目然后再重新生成看下,这样做的目的是确保你点击的exe文件就是你在vs下面运行的时候生成的exe文件
------解决方案--------------------
应该是文件正在使用时,你打开它,你访问方式变一下,能不能修改变共享方式读取(有没有共享方式),或判断一下文件有没有正在使用中 ds = Gdal.OpenShared(filePath, Access.GA_ReadOnly);