这个问题很奇葩也很怪异,我在本机中使用Console和但网页的测试程序都是通过了的,但是经过同事测试下,一直抛出异常 StackOverflowException,这个异常的解释是调用的动态库中可能存在无限循环,或者是函数嵌套太多。
这个问题调试了一天,也困扰了我一天,dll本身的函数逻辑是没有问题的,最后在c#中开启了一个线程且合理的分配了堆的大小,函数通过了。这个问题也算是解决了一半吧,不知道哪位大神能来详细解释一番。
类似于下面的代码:
改之前
var r = your_class_name.function_name(var1, var2,...);
改之后:
Thread thread = new Thread(() =>
{
var r = your_class_name.function_name(var1, var2,...);
}, 合理的大小);
thread.Start();
thread.Join();