我有一个尝试写入WebSphere MQ Queue的SSIS脚本任务(用C#编写)。显然我们必须引用一个特定的dll来帮助建立这种连接,但是我得到一个涉及单独的dll的错误。当程序尝试打开与队列的连接时,将显示以下错误:
{"Unable to find an entry point named 'zstMQGET' in DLL
'C:\\Program Files (x86)\\IBM\\WebSphere MQ\\bin\\mqic.dll'.":""}
System.Exception {System.EntryPointNotFoundException}
我在文件夹中找到了dll,并尝试将其添加为参考,但VS2010不允许这样做。我收到一条错误消息“请确保该文件可以访问,并且它是一个有效的程序集或COM组件。”
我还应该补充说我已经下载了Dependency Walker以检查mqic.dll并遇到以下错误消息:
“警告:找不到至少一个延迟加载依赖模块。” “警告:由于延迟加载相关模块中缺少导出功能,至少有一个模块具有未解析的导入。”
EDIT 导致错误的代码部分是MQQueue对象的get()调用。这两种队列类型都是本地的,并且相应地设置了Dts.Variables
答案 0 :(得分:2)
我很抱歉(评论不可能)但你究竟改变了什么来让它运行?从5.3迁移到7.1并且无法找到解决方案时,我遇到了完全相同的问题
要使这篇文章更回答:我能够通过使用GET函数的3参数调用(具有消息大小的那个)来抑制此错误,然后不会发生EntryPoint-Error,但我不会知道确切的
更清楚:完全相同的函数调用在我的程序中稍后工作(没有任何修改)而不更改任何内容,因此这不是永久链接错误
答案 1 :(得分:1)
您是否运行了WMQInstallDir\bin\amqiRegisterdotNet.cmd
脚本?就此而言,你有没有运行供应商安装或只是抓住了dll?
它还会对您安装WMQ和Net组件的顺序产生影响。有关详细信息,请参阅信息中心的.Net installation topic。
如果您需要WMQ客户端的供应商安装媒体,可以免费下载:
建议使用最新的客户端版本以获得最佳性能和稳定性。它适用于旧版本的WMQ服务器。此外,请务必使用与您正在使用的客户端版本对应的信息中心!
答案 2 :(得分:1)
原来这是为MQ Client 5.3而不是7.1编写代码的结果。简单地做这个改变解决了我们的问题