【新手100分】C#调用DLL失败 - 报System.AccessViolationException 尝试读取或写入受保护的内存。这通常指示其它内存已损坏

孔南 2017-02-01 07:42:20
想玩一下【山大地纬】的医保嵌入式接口。它提供了seiproxy.dll 等类库供记账用。
因为是新手没玩过DLL,就按微软的一份教程尝试成功后进行了下列操作:
1、使用TlbImp输出SeiproxyTypeLib.dll 并用 Ildasm查看;
2、发现只有 Iproxy,CoClass_proxy两个接口和 CoClass_proxyClass 类;
3、在项目中引用 SeiproxyTypeLib.dll 并将嵌入式操作类型改为false;
4、编写代码如下:
static void Main(string[] args)
{
CoClass_proxyClass seiproxy = new CoClass_proxyClass();
int i = seiproxy.initialize("gzrybh#|yybm#|passwd#|syzhlx#0|");
}

尽管只有两行代码,但华丽丽地报错了(截图附后) :
System.AccessViolationException 尝试读取或写入受保护的内存。这通常指示其它内存已损坏。

后来断在第二行,发现第一行其实也没真正成功。
尝试搜索解决方案,如这个,但因笨难以发现问题所在。

求教:参照PB代码的话,要怎样改才能让代码正常运行
100分不成敬意,请高手笑纳!

================================================

================================================
以下是文档描述及PB示例代码:

(1)接口实例的创建(pb示例,各种开发工具方法不同):
Oleobject seiproxy                                 
seiproxy =create oleobject
vi= seiproxy.connecttonewobject(‘seiproxy’)
if vi<>0 then
messagebox(‘’,‘注册失败’)
return
end if

(2)接口登陆:
服务名称: initialize (pstr) returns long
vi=seiproxy. Initialize('gzrybh#|yybm#|passwd#|syzhlx#3|') 
if vi<>0 then
messagebox(‘医保接口登陆失败’,vi)
return
end if




btw: CSDN好像也有问类似问题的,如 http://bbs.csdn.net/topics/391036911
...全文
1373 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zxj714905510 2017-09-10
  • 打赏
  • 举报
回复
你好,请问你这个问题解决了么?
threenewbee 2017-02-02
  • 打赏
  • 举报
回复
控件/类型库本身是否注册成功,如果类型库是32bit的,你的程序集也要强制用32bit
孔南 2017-02-02
  • 打赏
  • 举报
回复
附上类库下载链接,供大侠们参考: http://pan.baidu.com/s/1c2suvW8 提取码 npgr
孔南 2017-02-02
  • 打赏
  • 举报
回复
引用 1 楼 shingoscar 的回复:
至少先照着范例写对吧
谢谢您的回复,我确实没有照着范例写(没用过PB),源码的前三句我找不出C#对应写法: 既看不出实例化的哪个类(没有 seiproxy这样的类,应该不支持实例化一个命名空间吧), 也不清楚 connecttonewobject 是不是就是 new 的意思?但微软的例子中只用了 new。 可能的话,想烦请赐教这前三句该怎么写,谢谢!
Oleobject seiproxy                                 
seiproxy =create oleobject
vi= seiproxy.connecttonewobject(‘seiproxy’)
孔南 2017-02-02
  • 打赏
  • 举报
回复
引用 2 楼 caozhy 的回复:
控件/类型库本身是否注册成功,如果类型库是32bit的,你的程序集也要强制用32bit
谢谢版主,我在开发端和客户端在Win7x64和WinXPx86下都试过。我再重新试试,再谢!
Poopaye 2017-02-01
  • 打赏
  • 举报
回复
至少先照着范例写对吧
内容概要:本文围绕基于CNN-BiLSTM-Attention混合神经网络模型的电力负荷预测展开研究,提出一种结合卷积神经网络(CNN)、双向长短期记忆网络(BiLSTM)与注意力机制(Attention)的深度学习框架,并通过Python代码实现高精度的短期与超短期负荷预测。该模型充利用CNN对局部特征的提取能力,捕捉负荷数据中的周期性与趋势性模式;借助BiLSTM对时间序列前后向依赖关系的建模能力,增强对动态变化的感知;并通过Attention机制自适应地聚焦关键历史时刻,提升预测准确性。文中详细阐述了数据预处理、模型结构设计、训练流程及超参数调优方法,并在真实负荷数据集上进行了实验验证,结果表明该混合模型相比传统单一模型和其他基准模型具有更优的预测性能,尤其在应对非线性、非平稳负荷波动方面表现突出。; 适合人群:具备一定Python编程能力和机器学习基础,从事电力系统析、能源管理、智能电网或时序预测相关工作的科研人员、工程师及高校研究生。; 使用场景及目标:①应用于电网调度、电力市场出清、需求响应管理等场景下的精细化负荷预测;②为研究人员提供一套完整的、可复现的深度学习负荷预测代码框架,推动AI技术在能源领域的落地应用;③帮助理解CNN、BiLSTM与Attention模块之间的协同机制及其在时序建模中的集成方式。; 阅读建议:建议读者结合所提供的Python代码进行动手实践,重点掌握数据归一化、滑动窗口构造、模型搭建与训练技巧,并尝试在不同地区、不同季节的负荷数据上进行迁移测试,以深入理解模型泛化能力与调参策略。
内容概要:本文围绕“MATLAB具有储能的经济调度及机会约束和鲁棒优化”展开,系统研究了电力系统中融合储能技术的经济调度问题,重点探讨了机会约束规划与鲁棒优化方法在应对新能源出力不确定性、负荷波动及系统运行风险中的应用。内容涵盖风光储协同调度、多微网共享储能、电动汽车参与调度、低碳经济调度等多种典型场景,深入析了储能的选址定容、功率协调控制、状态估计与优化调度模型。核心技术包括粒子群优化(PSO)、布鲁棒机会约束(DRCC)、模型预测控制(MPC)、鲁棒优化、二阶锥规划(SOCP)等先进算法,并提供了基于Matlab/Simulink的完整仿真代码实现,旨在提升新型电力系统的运行灵活性、经济性与抗风险能力。; 适合人群:具备电力系统、自动化、电气工程或相关专业背景,熟悉Matlab/Simulink仿真环境与基本优化算法,从事新能源并网、微电网运行、储能系统规划、电力市场调度等领域的研究生、科研人员及工程技术人员。; 使用场景及目标:① 学习并构建含储能的电力系统经济调度优化模型;② 掌握机会约束与鲁棒优化在处理新能源不确定性问题中的建模思路与求解方法;③ 利用提供的Matlab代码进行算法复现、仿真验证与性能对比,支撑科研项目攻关;④ 为撰写高水平学术论文、学位论文或工程优化方案提供可靠的模型参考与代码支持。; 阅读建议:建议读者结合文档中具体的案例(如风电-水电联合调度、电动汽车集群调度、多微网共享储能等)和配套的Matlab代码进行动手实践,重点关注优化模型的构建逻辑、约束条件设定与求解器配置过程,同时可关注公众号“荔枝科研社”获取完整资源包、复现教程及持续的技术支持。

111,128

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧