积极答复者
win7 系统 C#引入dll运行出错 无法加载 DLL“hqpTBfile.dll”: 内存位置访问无效。 (异常来自 HRESULT:0x800703E6)。

问题
-
下面是代码 在xp系统上运行正确 win7系统错误信息:无法加载 DLL“hqpTBfile.dll”: 内存位置访问无效。 (异常来自 HRESULT:0x800703E6)。
[DllImport("hqpTBfile.dll", EntryPoint = "DecryptStr", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern string DecryptStr(string strvalue, ref string passkey);
String passwordkey = "a@bz#3v!";
String inputstr = "fasdfasd";string retStr = DecryptStr(inputstr, ref passwordkey);Console.WriteLine(retStr);
答案
-
查了一下那个 HRESULT,意思是 Invalid access to memory location。也就是访问了无效的内存地址。这个问题应该是 DLL 加载成功了但是调用方法失败了。原因很可能是制作这个 API 的人没有考虑到 x64 的系统兼容性所致。可能没有其他办法了,除非可以拿到源代码或者利用反汇编进行调试。
Mark Zhou- 已标记为答案 Larcolais Gong 2010年12月29日 8:51
-
dear
别人写的呀 我上那找他要去哟 就没别的办法了吗? 谢谢.....
这是你自己写的元件还是引用别人的?若是别人写的你得去跟他要X86版本的
秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
人生吧,0岁出场,10岁成长;20为情彷徨;30基本定向;40拼命打闯;50回头望望;60告老还乡;70搓搓麻将;80晒晒太阳; 90躺在床上;100挂在墙上...生的伟大,死得凄凉!能牵手的时候,请别只是肩并肩,能拥抱的时候,请别只是手牵手,能在一起的时候,请别轻易分开!DEAR
是的,微軟也有元件不支援x64,比如OLEBD,只能使用别的元件,寻找其他解决方案,如果没其它方案表示只能在x86模式下执行
秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/- 已标记为答案 Larcolais Gong 2010年12月29日 8:51
全部回复
-
查了一下那个 HRESULT,意思是 Invalid access to memory location。也就是访问了无效的内存地址。这个问题应该是 DLL 加载成功了但是调用方法失败了。原因很可能是制作这个 API 的人没有考虑到 x64 的系统兼容性所致。可能没有其他办法了,除非可以拿到源代码或者利用反汇编进行调试。
Mark Zhou- 已标记为答案 Larcolais Gong 2010年12月29日 8:51
-
dear
别人写的呀 我上那找他要去哟 就没别的办法了吗? 谢谢.....
这是你自己写的元件还是引用别人的?若是别人写的你得去跟他要X86版本的
秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/
人生吧,0岁出场,10岁成长;20为情彷徨;30基本定向;40拼命打闯;50回头望望;60告老还乡;70搓搓麻将;80晒晒太阳; 90躺在床上;100挂在墙上...生的伟大,死得凄凉!能牵手的时候,请别只是肩并肩,能拥抱的时候,请别只是手牵手,能在一起的时候,请别轻易分开!DEAR
是的,微軟也有元件不支援x64,比如OLEBD,只能使用别的元件,寻找其他解决方案,如果没其它方案表示只能在x86模式下执行
秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/- 已标记为答案 Larcolais Gong 2010年12月29日 8:51