Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# PowerBuilder调用C代码在某些计算机上崩溃?_C#_C++_Powerbuilder - Fatal编程技术网

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

C# PowerBuilder调用C代码在某些计算机上崩溃?,c#,c++,powerbuilder,C#,C++,Powerbuilder,在从PowerBuilder调用C代码时,我似乎遇到了一个问题,但它只影响一些计算机 该程序本身是一个简单的程序,允许您发送电子邮件。应用程序是用PowerBuilder 11.2编写的,而SMTP部分是用C/C++编写的,它是在Mail.dll文件中创建的 当PowerBuilder应用程序运行时,它在我工作的几乎所有计算机上都能100%工作。在下面的几行中,它崩溃了 cmail mail = CREATE cmail 但正如我所说,它只在少数机器上。所有机器都是Dell台式机,运行Wind

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

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

当PowerBuilder应用程序运行时,它在我工作的几乎所有计算机上都能100%工作。在下面的几行中,它崩溃了

cmail mail = CREATE cmail
但正如我所说,它只在少数机器上。所有机器都是Dell台式机,运行Windows 7 64位和2.0GB Ram

DLL文件放在C:\Program Files x86\Sybase\PowerBuilder 11.0\中,相同的路径已添加到path变量中

有没有什么建议可以让我继续尝试找出可能的错误?我的信念是,即使文件路径在系统路径中,一些机器也找不到DLL,而且计算机实际上是相同的

多谢各位

编辑:下面是它向我们抛出的错误:

申请终止


错误:在w_email的对象cb_send的第11行,错误的运行时函数引用这里只是一个想法。它在这么多机器上工作,而不是在两三台机器上工作,这一事实使我倾向于这是一个配置/部署问题。当我遇到这样的情况时,我通常会拉出Dependency Walker并检查dll可能需要或不需要的文件是否丢失

我会在一台工作的机器和一台不工作的机器上运行它。这将获得在这些机器上更正此问题所需的信息


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

是否有可能将“null”对象从Powerbuilder传递到API中


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

最终发现了问题所在。该问题与通过调试模式构建.dll有关

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


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

这是一个非常多的词,但除了它之外什么都没有说,它并不总是起作用。至少研究一下崩溃,至少得到一个合适的错误信息。我们已经研究了几天了,但仍然没有任何结果。我们最初的代码是通过OLEObject连接到DLL的,但我们在创建对象时不断遇到同样的问题。我会用调试器运行代码,但PowerBuilder调试器在尝试访问C代码时会挂起。我对PowerBuilder一无所知。。。您是否通过COM、windows dll或您提到的其他方式公开C/C++代码您的原始代码是OLE?不管怎样,您的问题似乎是对象创建,而不是以后调用方法。