/ / Windows x86用のJAssimp.dllをビルドできません - java、リンカー、未解決の外部、assimp

Windows x86用のJAssimp.dllを構築できません - java、リンカー、未解決の外部、assimp

だから、私はLWJGLに入り込もうとしています。これは3Dモデルをロードしています、そして私はこれのためにJAssimpを使うと思いました。readmeは2つのステップを指定する、ネイティブコンポーネントと.jarコンポーネントを構築します。 "難しいのはネイティブライブラリです。私はこれをリンクしようとしましたが、成功しませんでした。Assimpのincludeディレクトリ、Javaのヘッダ、そしてJAssimpのassimp.libにリンクしました。しかし、私はまだこれらのエラーが出ます:

jassimp.obj : error LNK2019: unresolved external symbol _aiImportFile referenced in function _Java_jassimp_Jassimp_aiImportFile@20
jassimp.obj : error LNK2019: unresolved external symbol _aiReleaseImport referenced in function _Java_jassimp_Jassimp_aiImportFile@20
jassimp.obj : error LNK2019: unresolved external symbol _aiGetErrorString referenced in function _Java_jassimp_Jassimp_aiImportFile@20
C:UsersKevinDownloadsassimp-3.1.1-win-binariesportjassimpjassimp-nativesrcReleaseJassimp.dll : fatal error LNK1120: 3 unresolved externals

グーグルを回ってもほとんど同じ質問が出ますが、答えはありません。 https://xkcd.com/979/ そしてどのように述べたことはありません。 明らかに、あるライブラリへのリンクを見逃していましたが、他に何をリンクするのかわからないので、Assimpは私に1つしか提供していませんでした。

回答:

回答№1は0

他の人のために同じ問題、答えはそれを昔ながらのやり方でして、そしてC ++ Assimpを自分でコンパイルすることです。これにより、(特に)新しいassimp.libが得られます。提供されたものの代わりにこれとリンクすれば、エラーは消えます。


回答№2の場合は0

作り方

I)プライマリ共有オブジェクトlibassimp.soをビルドします。AssImp / assimp-3.2でこれらのコマンドを発行します。 a。 cmake CMakeLists.txt -G "Unixメークファイル" b。作る c。 AssImp / assimp-3.2 / libになる

II)これを発行してネイティブライブラリを構築するjassimp-native / src内のコマンド: a。 $ gcc jassimp.cpp -I / usr / lib / jvm / java-7-openjdk-amd64 / include / -I / usr / lib / jvm / java-7-openjdk-amd64 / include / linux -I / $ HOME / AssImp / assimp-3.2 / include -L / $ HOME / AssImp / assimp-3.2 / lib / libassimp.so -shared -fPIC -o libjassimp.so

libjassimp.so is required at runtime and must be located in java.library.path:
b. sudo cp /$HOME/AssImp/assimp-3.2/port/jassimp/jassimp-native/src/libjassimp.so   /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/

III)Javaバインディング Javaライブラリはを使用して構築されています蟻。 port / jassimpで "ant"を実行する ディレクトリはドキュメントを含むライブラリを構築するのに十分であるべきです。 Javaビルドは、Java 1.6クラスを作成するように構成されています。

The Jassimp.jar file generated by the "ant" call has to be incorporated
in your build.xml file:

<target name="init">
<property name="imports"      value="${libs}/jogl-all.jar:${libs}/gluegen-rt.jar:${libs}/jassimp.jar" />

<target name="compile" depends="prepare">
<compilerarg line="-Xlint -cp ${imports}" />

上記のすべてが良い知らせです。私は自分のコードを正常に構築しました。

悪い知らせは、実行時に私が次のエラーを受け取ったことです。 java:シンボル検索エラー:/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/libjassimp.so:未定義のシンボル:aiImportFile