我需要从C#4.0应用程序中调用Borland C ++ Builder 6.0编写的dll函数。我可以成功地从该dll中调用其他函数,但不是所需的函数。此功能的区别在于它显示了VCL GUI窗口。我怀疑这是问题,因为我成功地从C ++项目中调用了这个函数。我甚至创建了自己的C ++包装器Dll,它包装了我的目标BCB dll - 结果是一样的。我经常得到SEHException,这意味着我的Dll中的内部异常被抛出,但我无法检测到什么样的因为我无法调试这个dll。
您对此有何见解?
答案 0 :(得分:1)
在使用demo项目调用转换后,我发现当你对常规和编组不正确时,不会抛出SEHException,你永远不会得到SEHException而是内存/访问异常。
最后我找到了原因。这是非常愚蠢的..如果从包含“bin”字符串(.NET案例)的文件夹中调用dll,则无法创建文件并且使用SEH例程抛出了C ++ Builder异常:)这就是为什么从C ++调用是成功的。 / p>
摘要:
SEH异常表示您的Dll中存在内部异常。在C ++ Builder中,所有异常都基于此。
尝试调试原始资源,即使您似乎确定发生了什么。