我目前正在编写一些Java应用程序,我必须使用一些我也写过的本机库(C ++)。 JNI由SWIG生成。 大部分时间它都运行得非常好,但我不时会收到EXCEPTION_ACCESS_VIOLATION错误并且崩溃。扼杀,当发生这种情况时,我并没有称之为任何原生功能。
在错误日志中我找到了
“有问题的框架: C [profiler.dll + 0x4e0e4] Java_testpackage_testJNI_interface_1compute + 0x375b8“
但我根本没有使用这个compute()函数。它是由SWIG生成的testJNI.java和interface.java文件中的最后一个函数。当我从代码中删除这个函数时(在java和c ++中)我仍然得到相同的错误但是有另一个函数 - 也是最后一个函数。
你知道为什么会这样吗?