的C元素時成功我有一個程序,它具有Java代碼,然後使用JNI接口的C代碼,我試圖去實現的任務是將一些使用C源文件的Java文件,然後使用JNI實現相同的程序,但包含C文件。因此我知道Java代碼沒有問題。在源文件中,我有一個叫做readMap()的函數,它導致了這個問題。當通過JNI讀取文件時發生崩潰,但運行代碼爲
我已成功地將問題縮小到一個事實,即由於某種原因,C代碼將無法讀取地圖,下面如果當功能是通過JNI調用時執行的語句:
if(in = fopen("../maps/example_map.txt", "r") == NULL)
{
printf("Error opening file\n");
exit(-1);
}
但是,如果我只從MainTest.c中的main()運行C代碼,該函數將讀取地圖中的罰款和所有的C代碼將工作,因此我排除了類路徑錯誤的可能性。
我也縮小了JNI本身,因爲其他函數將被調用並在調用時返回所需的結果,但如果調用readMap(),則不起作用。
基本上我想知道是否有其他人有類似的問題,以及他們的修復是什麼或者如果任何人有任何想法可能是什麼?
'=='節拍'='。 – chux
您需要了解[*運算符優先級*](http://en.cppreference.com/w/c/language/operator_precedence),因爲表達式「in = fopen(...)== NULL」不會做你認爲它的事情。 –
你確定工作目錄在兩種情況下都是一樣的嗎?嘗試使用絕對路徑。 –