2

我有一个尝试写入 WebSphere MQ 队列的 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 并遇到以下错误消息:

“警告:未找到至少一个延迟加载依赖模块。” “警告:由于延迟加载依赖模块中缺少导出功能,至少有一个模块存在未解析的导入。”

编辑导致错误的代码部分是 MQQueue 对象的 get() 调用。这两种队列类型都是本地的,并且相应地设置了 Dts.Variables

4

3 回答 3

2

很抱歉(无法发表评论),但你究竟做了什么改变才能让它运行?从 5.3 迁移到 7.1 时我遇到了完全相同的问题,但找不到解决方案

为了使这篇文章成为一个答案:我能够通过使用 GET 函数(具有消息大小的那个)的 3 参数调用来抑制此错误,然后不会发生 EntryPoint-Error,但我不知道确切的为了它

更清晰:完全相同的函数调用稍后在我的程序中工作(没有任何修改)而不更改任何内容,因此这不是永久链接错误

于 2012-10-04T10:54:24.030 回答
1

你运行WMQInstallDir\bin\amqiRegisterdotNet.cmd脚本了吗?就此而言,您是否运行了供应商安装或只是获取了 dll?

安装 WMQ 和 Net 组件的顺序也会有所不同。有关详细信息,请参阅信息中心中的.Net 安装主题

如果您需要 WMQ 客户端的供应商安装介质,可以免费下载:

建议使用最新的客户端版本以获得最佳性能和稳定性。它适用于旧版本的 WMQ 服务器。另外,请务必使用与您正在使用的客户端版本相对应的信息中心!

于 2012-08-09T15:57:22.247 回答
1

结果证明这是为 MQ 客户端 5.3 而不是 7.1 编写的代码的结果。只需进行此更改即可解决我们的问题。

于 2012-08-10T19:50:32.300 回答