Java JNI';s";对位置的内存访问无效……”; 我有一些C++代码,我们称之为A。它包含一些嵌套函数,所以要用A来做一个二进制,我需要使用-fnStest-FraveFigels.

Java JNI';s";对位置的内存访问无效……”; 我有一些C++代码,我们称之为A。它包含一些嵌套函数,所以要用A来做一个二进制,我需要使用-fnStest-FraveFigels.,java,c++,macos,debugging,java-native-interface,Java,C++,Macos,Debugging,Java Native Interface,现在我需要从中创建一个.jnilib库,以便可以从Java调用它。但是,我发现了一个错误: 对位置0x105的内存访问无效。。。rip=0x105 我无法找出原因(我试图在链接创建.jnilib库时包含-fnested functions标志,但g++不允许) 以前有没有人遇到过这个问题,或者可以建议如何调试(核心转储)这个问题 我正在使用内置Java运行MacOS Lion。消息说您的代码试图在0x105处调用一些代码,但那里什么都没有。那么,你是怎么来到这里的?调用是什么样子的?我追溯了代码

现在我需要从中创建一个.jnilib库,以便可以从Java调用它。但是,我发现了一个错误:

对位置0x105的内存访问无效。。。rip=0x105

我无法找出原因(我试图在链接创建.jnilib库时包含-fnested functions标志,但g++不允许)

以前有没有人遇到过这个问题,或者可以建议如何调试(核心转储)这个问题


我正在使用内置Java运行MacOS Lion。

消息说您的代码试图在0x105处调用一些代码,但那里什么都没有。那么,你是怎么来到这里的?调用是什么样子的?我追溯了代码(通过打印内容),当它试图调用嵌套函数时,就会发生这种情况。当我从中编译二进制文件时,我在完全相同的位置遇到了分段错误,但通过使用-fnested函数标志解决了这个问题。但是,当将编译到共享库中时,此标志不起作用。对,因此在较新版本的Mac OS中支持嵌套函数时,这是一个真正的问题,因为它们使用的是不喜欢嵌套函数的Clang编译器。解决方案是在()下载并应用修补程序。编译时有一个小错误,但修复它非常简单。