PowerBuilder在某些计算机上调用C#代码崩溃?

时间:2011-02-11 18:56:14

标签: c# c++ powerbuilder

在从PowerBuilder调用C#代码时,我似乎遇到了一个问题,但它只会影响某些计算机。

程序本身是一个简单的程序,允许您发送电子邮件。该应用程序是用PowerBuilder 11.2编写的,而SMTP部分是用C#/ C ++编写的,它是在Mail.dll文件中创建的。

当PowerBuilder应用程序运行时,它几乎可以在我工作的所有计算机上运行。在以下一行中有几个崩溃的地方

cmail mail = CREATE cmail

但正如我所说,它仅限于几台机器上。所有机器都是戴尔台式机,运行Windows 7 64位,带有2.0GB Ram。

DLL文件位于C:\ Program Files(x86)\ Sybase \ PowerBuilder 11.0 \,并且该路径已添加到PATH变量中。

我是否有任何提示可以继续尝试找出可能出错的地方?我的信念是,即使文件路径在系统路径中,某些机器也找不到DLL,并且计算机几乎完全相同。

谢谢。

编辑:这是它向我们投掷的错误:

申请已终止。

错误:即使是w_email的对象cb_send点击第11行的运行时函数引用错误

3 个答案:

答案 0 :(得分:1)

在这里想一想。事实上,它在如此多的机器上运行而不是在两台或三台机器上工作,这使我倾向于这是一个配置/部署问题。当我遇到这样的情况时,我通常会拔出Dependency Walker并检查你的dll可能需要或不需要哪些文件丢失(或不丢失)。

Dependency Walker

我会在一台工作的机器上运行它,并在其中一台无法运行的机器上运行。这应该可以获得在这些计算机上更正此问题所需的信息。

如果这有助于你,请告诉我。我很想知道它是什么。

答案 1 :(得分:1)

结束找出问题所在。该问题与通过DEBUG模式构建.dll有关。

如果.dll处于DEBUG模式,它将使用.NET Framework的特殊版本,该版本仅可从VisualStudio 20xx获得。

只需将其更改为RELEASE build即可在所有计算机上运行。

答案 2 :(得分:0)

是否有可能将'null'对象从Powerbuilder传递到API?

我刚刚解决了这样的问题。对于某些参数,除了null之外,还必须更新C#代码以检查System.DBNull,否则会发生强制转换异常,如果未处理,最终会显示类似于您在PB应用程序中描述的消息。