phpエディタのYouziがCプログラムを書いていると、「コンパイルされたCライブラリ関数が見つからない」という問題に遭遇することがあります。このエラーは通常、リンク段階で発生し、コンパイラが必要なライブラリ関数を見つけられないことを意味します。この問題には、ライブラリ ファイル パスの不適切な構成、ライブラリ ファイルの不適切なインストールなど、さまざまな理由が考えられます。この問題を解決するには、ライブラリ ファイルのパスを確認し、ライブラリ ファイルを再インストールし、コンパイラを更新することで問題を解決できます。この記事では、この一般的なコンパイル エラーを修正する方法を詳しく説明します。
libmylibrary.a という名前のファイルと mylibrary.h# という名前のファイルがあります。 ## ヘッダー ファイル には、myfunction() という名前の関数が含まれています。これらを cpp ファイル (helloworldjni.cpp) と組み合わせて、native.dll という新しいライブラリを作成しました。しかし、jni を使用して Java で native.dll をコンパイルしようとすると、libmylibrary.a と mylibrary.h に関数が見つかりません。
mylibrary.h リーリー
これらは私が従った手順です 1. jni統合用Javaファイル(helloworldjni.java)を作成しますリーリー
2.このコマンドを使用して helloworldjni.h ファイルを作成しますリーリー
3. mylibrary.h ファイルと helloworldjni.h ファイルを cpp ファイル (helloworldjni.cpp) と統合しますリーリー
4. これらのファイルをコンパイルします (.o ファイルを作成します)リーリー
5. .o ファイルを .dll ファイルに生成するリーリー
6. helloworldjni.javaをコンパイルして実行します。 リーリー
次のエラーを受け取りました:リーリー
libmylibrary.a の関数を確実に認識させるために、libmylibrary.a を Java コードのコンパイルに組み込むにはどうすればよいですか?
ps: 純粋な c を使用して myfunction() を呼び出すことができるので、libmylibrary.a には問題ないと確信していますが、jni を使用する場合は、理解できないある種のリンクの問題があるようです回避策リーリー
ただし、注意すべき点がいくつかあります:
は実際には
__declspec(dllimport)# ではなく
__declspec(dllexport) になります
##Linux で -fpic
を使用して c ファイル をコンパイルする必要があります。
以上がコンパイルされた C++ ライブラリ関数が見つかりませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。