C# 从C调用BCB dll# 我需要调用一个从Borland C++ Builder 6编写的DLL函数,由C 4应用程序调用。我可以成功地从该dll调用其他函数,但不是所需的函数。此函数的区别在于它显示VCL GUI窗口。我怀疑这是个问题,因为我成功地从C++项目调用这个函数。我甚至创建了自己的C++包装DLL,它包住了我的目标BCB DLL,结果是一样的。我不断地得到SEHException,这意味着在我的Dll中抛出了一个内部异常,但我无法检测到什么类型的异常,因为我无法调试这个Dll

C# 从C调用BCB dll# 我需要调用一个从Borland C++ Builder 6编写的DLL函数,由C 4应用程序调用。我可以成功地从该dll调用其他函数,但不是所需的函数。此函数的区别在于它显示VCL GUI窗口。我怀疑这是个问题,因为我成功地从C++项目调用这个函数。我甚至创建了自己的C++包装DLL,它包住了我的目标BCB DLL,结果是一样的。我不断地得到SEHException,这意味着在我的Dll中抛出了一个内部异常,但我无法检测到什么类型的异常,因为我无法调试这个Dll,c#,dll,user-interface,dllimport,C#,Dll,User Interface,Dllimport,您对此有什么见解吗?在使用demo project进行调用转换之后,我发现当您对约定和封送不正确时,不会抛出SEHException,您永远不会得到SEHException,而是内存/访问异常 我终于找到了原因。这太愚蠢了。。如果从包含“bin”字符串的文件夹(.NET case)调用DLL,则文件无法创建,并且C++生成器异常被抛出SEH例程:这就是为什么C++调用成功的原因。 小结: SEH异常表示Dll中的内部异常。在C++ Builder中,所有异常都是基于此的。 试着调试原始源代码,

您对此有什么见解吗?

在使用demo project进行调用转换之后,我发现当您对约定和封送不正确时,不会抛出SEHException,您永远不会得到SEHException,而是内存/访问异常

我终于找到了原因。这太愚蠢了。。如果从包含“bin”字符串的文件夹(.NET case)调用DLL,则文件无法创建,并且C++生成器异常被抛出SEH例程:这就是为什么C++调用成功的原因。 小结:

  • SEH异常表示Dll中的内部异常。在C++ Builder中,所有异常都是基于此的。

  • 试着调试原始源代码,即使您似乎确定发生了什么


  • 使用调用约定来查看/播放。您应该在这里显示C++代码定义和C p/p/Cukes部分的代码片段。