第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

JNI 調(diào)用 C 函數(shù),調(diào)用其他文件中的其他函數(shù)

JNI 調(diào)用 C 函數(shù),調(diào)用其他文件中的其他函數(shù)

慕無忌1623718 2022-08-17 10:54:05
我在使用來自Java JNI的其他.c文件中的其他C函數(shù)調(diào)用C函數(shù)時(shí)遇到問題(不要介意我的代碼中的一些法語單詞,謝謝)。C 中的代碼工作正常。以下是我用來編譯庫的兩行。我正在使用我在第二個(gè)庫中使用的函數(shù)編譯我的第一個(gè)庫。告訴我,如果我做錯(cuò)了,能夠做到這一點(diǎn):gcc -fPIC -shared -I"$$JAVA_HOME/include" -I"$$JAVA_HOME/include/linux" -o Libraries/libfilemot.so ../IndexationTexte/fileMot.cgcc -fPIC -shared -I"$$JAVA_HOME/include" -I"$$JAVA_HOME/include/linux" ../IndexationTexte/indexationV1.c -L./Libraries/ -l:libfilemot.so -o Libraries/libindexation.so在我的Java類中,我有這個(gè):public class MoteurDeRecherche {static {    try {        System.load("/home/aurelien/Documents/Projects/Projet_fil_rouge/noyau_c/JNI/Libraries/libfilemot.so");        System.load("/home/aurelien/Documents/Projects/Projet_fil_rouge/noyau_c/JNI/Libraries/libindexation.so");    }    catch(UnsatisfiedLinkError e) {        System.out.println("Erreur de chargement des librairies :\n" + e);        System.exit(1);    }}public static native void indexationTexte();public static void main(String args[]) {    MoteurDeRecherche.indexationTexte();}}但是我收到這個(gè)錯(cuò)誤來自我的庫,它編譯成功:Erreur de chargement des librairies :java.lang.UnsatisfiedLinkError: /home/aurelien/Documents/Projects/Projet_fil_rouge/noyau_c/JNI/Libraries/libindexation.so: libfilemot.so: cannot open shared object file: No such file or directory如果您想了解更多信息,請(qǐng)不要猶豫。再次感謝你。
查看完整描述

2 回答

?
慕的地8271018

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊

本機(jī)鏈接器找不到共享對(duì)象。將帶有 so 的文件夾添加到您的 .LD_LIBRARY_PATH

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:Libraries/

或者,您可以將其添加到本地庫文件夾(通常)并重新運(yùn)行 。/usr/local/libldconfig


查看完整回答
反對(duì) 回復(fù) 2022-08-17
?
慕尼黑5688855

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超2個(gè)贊

所以我終于找到了為什么,這不是從多個(gè)文件使用多個(gè)函數(shù)的方法。您只需將所需的所有文件放在gcc命令中即可。我不知道為什么我試圖使一個(gè)文件的庫依賴于另一個(gè)文件的另一個(gè)庫。這是我的項(xiàng)目的命令:


gcc -fPIC -shared -I"$$JAVA_HOME/include" -I"$$JAVA_HOME/include/linux" ../IndexationTexte/indexationV1.c ../IndexationTexte/fileMot.c -o Libraries/libindexation.so


對(duì)于更通用的方法,如果您有:


file1.c :


#include "file2.c"

void function1()

{

    function2();

}

file2.c :


void function2()

{

    printf("hey from an other file");

}

你必須像這樣簡(jiǎn)單地編譯你的項(xiàng)目:


gcc -fPIC -shared -I"$$JAVA_HOME/include" -I"$$JAVA_HOME/include/linux" file1.C file2.c -o libmylibrary.so


查看完整回答
反對(duì) 回復(fù) 2022-08-17
  • 2 回答
  • 0 關(guān)注
  • 97 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)